You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2815 lines
164 KiB

/*
* Array.prototype.sort() tests.
*
* The current implementation is qsort() with a random pivot, which makes
* this test non-deterministic unless the internal randomizer state is
* initialized with a fixed seed.
*/
/*---
{
"custom": true
}
---*/
function dumpValue(v) {
var i, n;
var tmp;
var t;
n = v.length;
tmp = [];
for (i = 0; i < n; i++) {
if (v.hasOwnProperty(i)) {
t = v[i];
if (typeof t === 'function') {
tmp.push('function');
} else if (typeof t === 'object') {
tmp.push('object');
} else {
tmp.push(String(t));
}
} else {
tmp.push('nonexistent');
}
}
return tmp.join(',');
}
function test(this_value, args, suppress_value) {
var t;
if (args === undefined) {
args = [];
}
try {
t = Array.prototype.sort.apply(this_value, args);
if (suppress_value) {
print('success');
} else {
print(dumpValue(t));
}
} catch (e) {
print(e.name);
}
}
function printDesc(obj, key) {
var pd = Object.getOwnPropertyDescriptor(obj, key);
if (!pd) {
print(key, 'nonexistent');
return;
}
print(key,
'value=' + pd.value,
'writable=' + pd.writable,
'enumerable=' + pd.enumerable,
'configurable=' + pd.configurable);
}
/*===
basic
1
1,2
1,2
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,1
1,1,2
1,1,2
1,1,2
1,10,2,3,4,5,6,7,8,9,undefined,undefined,undefined,undefined,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent
1,10,12,13,2,5,7,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent,nonexistent
1,10,2,3,4,5,6,7,8,9
1,10,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9,10
10,9,8,7,6,5,4,3,2,1
===*/
print('basic');
function basicTest() {
/* Note that all cases without an explicit compare function will sort
* elements as strings after ToString() coercion, e.g. 1 and 2 are
* compared with string comparison "1" vs "2". Thus, "1" < "10" < "2".
*/
// empty case
test([]);
test({ length: 0 });
test({});
// one element case
test([1]);
// a few different lengths, in various orders
test([1,2]);
test([2,1]);
test([1,2,3]);
test([1,3,2]);
test([2,1,3]);
test([2,3,1]);
test([3,1,2]);
test([3,2,1]);
// a few different lengths with some equal elements
test([1,1]);
test([1,1,2]);
test([1,2,1]);
test([2,1,1]);
// undefined elements will be pushed to the end, and 'nonexistent' elements
// even farther
obj = [1,2,undefined,3,4,undefined,5,6,undefined,7,8,undefined,9,10];
obj.length = 20;
test(obj);
// sparse array
obj = [1,5,10];
obj[100] = 2;
obj[101] = 7;
obj[102] = 13;
obj[50] = 12;
test(obj);
// elements are compared as strings by default
test([1,2,3,4,5,6,7,8,9,10]);
test([2,4,6,8,10,1,3,5,7,9]);
// explicit sort function for numbers, ascending and descending
test([1,2,3,4,5,6,7,8,9,10], [ function(a,b) { return a-b; } ]);
test([2,4,6,8,10,1,3,5,7,9], [ function(a,b) { return b-a; } ]);
}
try {
basicTest();
} catch (e) {
print(e);
}
/*===
exhaustive
1,2,3 -- 1,2,3
1,3,2 -- 1,2,3
2,1,3 -- 1,2,3
2,3,1 -- 1,2,3
3,1,2 -- 1,2,3
3,2,1 -- 1,2,3
1,2,3 -- 1,2,3
1,3,2 -- 1,2,3
2,1,3 -- 1,2,3
2,3,1 -- 1,2,3
3,1,2 -- 1,2,3
3,2,1 -- 1,2,3
1,2,3 -- 1,2,3
1,3,2 -- 1,2,3
2,1,3 -- 1,2,3
2,3,1 -- 1,2,3
3,1,2 -- 1,2,3
3,2,1 -- 1,2,3
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,3,3,4,5 -- 1,2,3,3,4,5
1,2,3,3,5,4 -- 1,2,3,3,4,5
1,2,3,4,3,5 -- 1,2,3,3,4,5
1,2,3,4,5,3 -- 1,2,3,3,4,5
1,2,3,5,3,4 -- 1,2,3,3,4,5
1,2,3,5,4,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,3,3,5 -- 1,2,3,3,4,5
1,2,4,3,5,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,4,5,3,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,3,3,4 -- 1,2,3,3,4,5
1,2,5,3,4,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,2,5,4,3,3 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,3,2,3,4,5 -- 1,2,3,3,4,5
1,3,2,3,5,4 -- 1,2,3,3,4,5
1,3,2,4,3,5 -- 1,2,3,3,4,5
1,3,2,4,5,3 -- 1,2,3,3,4,5
1,3,2,5,3,4 -- 1,2,3,3,4,5
1,3,2,5,4,3 -- 1,2,3,3,4,5
1,3,3,2,4,5 -- 1,2,3,3,4,5
1,3,3,2,5,4 -- 1,2,3,3,4,5
1,3,3,4,2,5 -- 1,2,3,3,4,5
1,3,3,4,5,2 -- 1,2,3,3,4,5
1,3,3,5,2,4 -- 1,2,3,3,4,5
1,3,3,5,4,2 -- 1,2,3,3,4,5
1,3,4,2,3,5 -- 1,2,3,3,4,5
1,3,4,2,5,3 -- 1,2,3,3,4,5
1,3,4,3,2,5 -- 1,2,3,3,4,5
1,3,4,3,5,2 -- 1,2,3,3,4,5
1,3,4,5,2,3 -- 1,2,3,3,4,5
1,3,4,5,3,2 -- 1,2,3,3,4,5
1,3,5,2,3,4 -- 1,2,3,3,4,5
1,3,5,2,4,3 -- 1,2,3,3,4,5
1,3,5,3,2,4 -- 1,2,3,3,4,5
1,3,5,3,4,2 -- 1,2,3,3,4,5
1,3,5,4,2,3 -- 1,2,3,3,4,5
1,3,5,4,3,2 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,3,3,5 -- 1,2,3,3,4,5
1,4,2,3,5,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,2,5,3,3 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,3,2,3,5 -- 1,2,3,3,4,5
1,4,3,2,5,3 -- 1,2,3,3,4,5
1,4,3,3,2,5 -- 1,2,3,3,4,5
1,4,3,3,5,2 -- 1,2,3,3,4,5
1,4,3,5,2,3 -- 1,2,3,3,4,5
1,4,3,5,3,2 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,2,3,3 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,4,5,3,2,3 -- 1,2,3,3,4,5
1,4,5,3,3,2 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,3,3,4 -- 1,2,3,3,4,5
1,5,2,3,4,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,2,4,3,3 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,3,2,3,4 -- 1,2,3,3,4,5
1,5,3,2,4,3 -- 1,2,3,3,4,5
1,5,3,3,2,4 -- 1,2,3,3,4,5
1,5,3,3,4,2 -- 1,2,3,3,4,5
1,5,3,4,2,3 -- 1,2,3,3,4,5
1,5,3,4,3,2 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,2,3,3 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
1,5,4,3,2,3 -- 1,2,3,3,4,5
1,5,4,3,3,2 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,3,3,4,5 -- 1,2,3,3,4,5
2,1,3,3,5,4 -- 1,2,3,3,4,5
2,1,3,4,3,5 -- 1,2,3,3,4,5
2,1,3,4,5,3 -- 1,2,3,3,4,5
2,1,3,5,3,4 -- 1,2,3,3,4,5
2,1,3,5,4,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,3,3,5 -- 1,2,3,3,4,5
2,1,4,3,5,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,4,5,3,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,3,3,4 -- 1,2,3,3,4,5
2,1,5,3,4,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,1,5,4,3,3 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,3,1,3,4,5 -- 1,2,3,3,4,5
2,3,1,3,5,4 -- 1,2,3,3,4,5
2,3,1,4,3,5 -- 1,2,3,3,4,5
2,3,1,4,5,3 -- 1,2,3,3,4,5
2,3,1,5,3,4 -- 1,2,3,3,4,5
2,3,1,5,4,3 -- 1,2,3,3,4,5
2,3,3,1,4,5 -- 1,2,3,3,4,5
2,3,3,1,5,4 -- 1,2,3,3,4,5
2,3,3,4,1,5 -- 1,2,3,3,4,5
2,3,3,4,5,1 -- 1,2,3,3,4,5
2,3,3,5,1,4 -- 1,2,3,3,4,5
2,3,3,5,4,1 -- 1,2,3,3,4,5
2,3,4,1,3,5 -- 1,2,3,3,4,5
2,3,4,1,5,3 -- 1,2,3,3,4,5
2,3,4,3,1,5 -- 1,2,3,3,4,5
2,3,4,3,5,1 -- 1,2,3,3,4,5
2,3,4,5,1,3 -- 1,2,3,3,4,5
2,3,4,5,3,1 -- 1,2,3,3,4,5
2,3,5,1,3,4 -- 1,2,3,3,4,5
2,3,5,1,4,3 -- 1,2,3,3,4,5
2,3,5,3,1,4 -- 1,2,3,3,4,5
2,3,5,3,4,1 -- 1,2,3,3,4,5
2,3,5,4,1,3 -- 1,2,3,3,4,5
2,3,5,4,3,1 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,3,3,5 -- 1,2,3,3,4,5
2,4,1,3,5,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,1,5,3,3 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,3,1,3,5 -- 1,2,3,3,4,5
2,4,3,1,5,3 -- 1,2,3,3,4,5
2,4,3,3,1,5 -- 1,2,3,3,4,5
2,4,3,3,5,1 -- 1,2,3,3,4,5
2,4,3,5,1,3 -- 1,2,3,3,4,5
2,4,3,5,3,1 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,1,3,3 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,4,5,3,1,3 -- 1,2,3,3,4,5
2,4,5,3,3,1 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,3,3,4 -- 1,2,3,3,4,5
2,5,1,3,4,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,1,4,3,3 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,3,1,3,4 -- 1,2,3,3,4,5
2,5,3,1,4,3 -- 1,2,3,3,4,5
2,5,3,3,1,4 -- 1,2,3,3,4,5
2,5,3,3,4,1 -- 1,2,3,3,4,5
2,5,3,4,1,3 -- 1,2,3,3,4,5
2,5,3,4,3,1 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,1,3,3 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
2,5,4,3,1,3 -- 1,2,3,3,4,5
2,5,4,3,3,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
3,1,2,3,4,5 -- 1,2,3,3,4,5
3,1,2,3,5,4 -- 1,2,3,3,4,5
3,1,2,4,3,5 -- 1,2,3,3,4,5
3,1,2,4,5,3 -- 1,2,3,3,4,5
3,1,2,5,3,4 -- 1,2,3,3,4,5
3,1,2,5,4,3 -- 1,2,3,3,4,5
3,1,3,2,4,5 -- 1,2,3,3,4,5
3,1,3,2,5,4 -- 1,2,3,3,4,5
3,1,3,4,2,5 -- 1,2,3,3,4,5
3,1,3,4,5,2 -- 1,2,3,3,4,5
3,1,3,5,2,4 -- 1,2,3,3,4,5
3,1,3,5,4,2 -- 1,2,3,3,4,5
3,1,4,2,3,5 -- 1,2,3,3,4,5
3,1,4,2,5,3 -- 1,2,3,3,4,5
3,1,4,3,2,5 -- 1,2,3,3,4,5
3,1,4,3,5,2 -- 1,2,3,3,4,5
3,1,4,5,2,3 -- 1,2,3,3,4,5
3,1,4,5,3,2 -- 1,2,3,3,4,5
3,1,5,2,3,4 -- 1,2,3,3,4,5
3,1,5,2,4,3 -- 1,2,3,3,4,5
3,1,5,3,2,4 -- 1,2,3,3,4,5
3,1,5,3,4,2 -- 1,2,3,3,4,5
3,1,5,4,2,3 -- 1,2,3,3,4,5
3,1,5,4,3,2 -- 1,2,3,3,4,5
3,2,1,3,4,5 -- 1,2,3,3,4,5
3,2,1,3,5,4 -- 1,2,3,3,4,5
3,2,1,4,3,5 -- 1,2,3,3,4,5
3,2,1,4,5,3 -- 1,2,3,3,4,5
3,2,1,5,3,4 -- 1,2,3,3,4,5
3,2,1,5,4,3 -- 1,2,3,3,4,5
3,2,3,1,4,5 -- 1,2,3,3,4,5
3,2,3,1,5,4 -- 1,2,3,3,4,5
3,2,3,4,1,5 -- 1,2,3,3,4,5
3,2,3,4,5,1 -- 1,2,3,3,4,5
3,2,3,5,1,4 -- 1,2,3,3,4,5
3,2,3,5,4,1 -- 1,2,3,3,4,5
3,2,4,1,3,5 -- 1,2,3,3,4,5
3,2,4,1,5,3 -- 1,2,3,3,4,5
3,2,4,3,1,5 -- 1,2,3,3,4,5
3,2,4,3,5,1 -- 1,2,3,3,4,5
3,2,4,5,1,3 -- 1,2,3,3,4,5
3,2,4,5,3,1 -- 1,2,3,3,4,5
3,2,5,1,3,4 -- 1,2,3,3,4,5
3,2,5,1,4,3 -- 1,2,3,3,4,5
3,2,5,3,1,4 -- 1,2,3,3,4,5
3,2,5,3,4,1 -- 1,2,3,3,4,5
3,2,5,4,1,3 -- 1,2,3,3,4,5
3,2,5,4,3,1 -- 1,2,3,3,4,5
3,3,1,2,4,5 -- 1,2,3,3,4,5
3,3,1,2,5,4 -- 1,2,3,3,4,5
3,3,1,4,2,5 -- 1,2,3,3,4,5
3,3,1,4,5,2 -- 1,2,3,3,4,5
3,3,1,5,2,4 -- 1,2,3,3,4,5
3,3,1,5,4,2 -- 1,2,3,3,4,5
3,3,2,1,4,5 -- 1,2,3,3,4,5
3,3,2,1,5,4 -- 1,2,3,3,4,5
3,3,2,4,1,5 -- 1,2,3,3,4,5
3,3,2,4,5,1 -- 1,2,3,3,4,5
3,3,2,5,1,4 -- 1,2,3,3,4,5
3,3,2,5,4,1 -- 1,2,3,3,4,5
3,3,4,1,2,5 -- 1,2,3,3,4,5
3,3,4,1,5,2 -- 1,2,3,3,4,5
3,3,4,2,1,5 -- 1,2,3,3,4,5
3,3,4,2,5,1 -- 1,2,3,3,4,5
3,3,4,5,1,2 -- 1,2,3,3,4,5
3,3,4,5,2,1 -- 1,2,3,3,4,5
3,3,5,1,2,4 -- 1,2,3,3,4,5
3,3,5,1,4,2 -- 1,2,3,3,4,5
3,3,5,2,1,4 -- 1,2,3,3,4,5
3,3,5,2,4,1 -- 1,2,3,3,4,5
3,3,5,4,1,2 -- 1,2,3,3,4,5
3,3,5,4,2,1 -- 1,2,3,3,4,5
3,4,1,2,3,5 -- 1,2,3,3,4,5
3,4,1,2,5,3 -- 1,2,3,3,4,5
3,4,1,3,2,5 -- 1,2,3,3,4,5
3,4,1,3,5,2 -- 1,2,3,3,4,5
3,4,1,5,2,3 -- 1,2,3,3,4,5
3,4,1,5,3,2 -- 1,2,3,3,4,5
3,4,2,1,3,5 -- 1,2,3,3,4,5
3,4,2,1,5,3 -- 1,2,3,3,4,5
3,4,2,3,1,5 -- 1,2,3,3,4,5
3,4,2,3,5,1 -- 1,2,3,3,4,5
3,4,2,5,1,3 -- 1,2,3,3,4,5
3,4,2,5,3,1 -- 1,2,3,3,4,5
3,4,3,1,2,5 -- 1,2,3,3,4,5
3,4,3,1,5,2 -- 1,2,3,3,4,5
3,4,3,2,1,5 -- 1,2,3,3,4,5
3,4,3,2,5,1 -- 1,2,3,3,4,5
3,4,3,5,1,2 -- 1,2,3,3,4,5
3,4,3,5,2,1 -- 1,2,3,3,4,5
3,4,5,1,2,3 -- 1,2,3,3,4,5
3,4,5,1,3,2 -- 1,2,3,3,4,5
3,4,5,2,1,3 -- 1,2,3,3,4,5
3,4,5,2,3,1 -- 1,2,3,3,4,5
3,4,5,3,1,2 -- 1,2,3,3,4,5
3,4,5,3,2,1 -- 1,2,3,3,4,5
3,5,1,2,3,4 -- 1,2,3,3,4,5
3,5,1,2,4,3 -- 1,2,3,3,4,5
3,5,1,3,2,4 -- 1,2,3,3,4,5
3,5,1,3,4,2 -- 1,2,3,3,4,5
3,5,1,4,2,3 -- 1,2,3,3,4,5
3,5,1,4,3,2 -- 1,2,3,3,4,5
3,5,2,1,3,4 -- 1,2,3,3,4,5
3,5,2,1,4,3 -- 1,2,3,3,4,5
3,5,2,3,1,4 -- 1,2,3,3,4,5
3,5,2,3,4,1 -- 1,2,3,3,4,5
3,5,2,4,1,3 -- 1,2,3,3,4,5
3,5,2,4,3,1 -- 1,2,3,3,4,5
3,5,3,1,2,4 -- 1,2,3,3,4,5
3,5,3,1,4,2 -- 1,2,3,3,4,5
3,5,3,2,1,4 -- 1,2,3,3,4,5
3,5,3,2,4,1 -- 1,2,3,3,4,5
3,5,3,4,1,2 -- 1,2,3,3,4,5
3,5,3,4,2,1 -- 1,2,3,3,4,5
3,5,4,1,2,3 -- 1,2,3,3,4,5
3,5,4,1,3,2 -- 1,2,3,3,4,5
3,5,4,2,1,3 -- 1,2,3,3,4,5
3,5,4,2,3,1 -- 1,2,3,3,4,5
3,5,4,3,1,2 -- 1,2,3,3,4,5
3,5,4,3,2,1 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,3,3,5 -- 1,2,3,3,4,5
4,1,2,3,5,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,2,5,3,3 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,3,2,3,5 -- 1,2,3,3,4,5
4,1,3,2,5,3 -- 1,2,3,3,4,5
4,1,3,3,2,5 -- 1,2,3,3,4,5
4,1,3,3,5,2 -- 1,2,3,3,4,5
4,1,3,5,2,3 -- 1,2,3,3,4,5
4,1,3,5,3,2 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,2,3,3 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,1,5,3,2,3 -- 1,2,3,3,4,5
4,1,5,3,3,2 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,3,3,5 -- 1,2,3,3,4,5
4,2,1,3,5,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,1,5,3,3 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,3,1,3,5 -- 1,2,3,3,4,5
4,2,3,1,5,3 -- 1,2,3,3,4,5
4,2,3,3,1,5 -- 1,2,3,3,4,5
4,2,3,3,5,1 -- 1,2,3,3,4,5
4,2,3,5,1,3 -- 1,2,3,3,4,5
4,2,3,5,3,1 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,1,3,3 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,2,5,3,1,3 -- 1,2,3,3,4,5
4,2,5,3,3,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,3,1,2,3,5 -- 1,2,3,3,4,5
4,3,1,2,5,3 -- 1,2,3,3,4,5
4,3,1,3,2,5 -- 1,2,3,3,4,5
4,3,1,3,5,2 -- 1,2,3,3,4,5
4,3,1,5,2,3 -- 1,2,3,3,4,5
4,3,1,5,3,2 -- 1,2,3,3,4,5
4,3,2,1,3,5 -- 1,2,3,3,4,5
4,3,2,1,5,3 -- 1,2,3,3,4,5
4,3,2,3,1,5 -- 1,2,3,3,4,5
4,3,2,3,5,1 -- 1,2,3,3,4,5
4,3,2,5,1,3 -- 1,2,3,3,4,5
4,3,2,5,3,1 -- 1,2,3,3,4,5
4,3,3,1,2,5 -- 1,2,3,3,4,5
4,3,3,1,5,2 -- 1,2,3,3,4,5
4,3,3,2,1,5 -- 1,2,3,3,4,5
4,3,3,2,5,1 -- 1,2,3,3,4,5
4,3,3,5,1,2 -- 1,2,3,3,4,5
4,3,3,5,2,1 -- 1,2,3,3,4,5
4,3,5,1,2,3 -- 1,2,3,3,4,5
4,3,5,1,3,2 -- 1,2,3,3,4,5
4,3,5,2,1,3 -- 1,2,3,3,4,5
4,3,5,2,3,1 -- 1,2,3,3,4,5
4,3,5,3,1,2 -- 1,2,3,3,4,5
4,3,5,3,2,1 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,2,3,3 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,1,3,2,3 -- 1,2,3,3,4,5
4,5,1,3,3,2 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,1,3,3 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,2,3,1,3 -- 1,2,3,3,4,5
4,5,2,3,3,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
4,5,3,1,2,3 -- 1,2,3,3,4,5
4,5,3,1,3,2 -- 1,2,3,3,4,5
4,5,3,2,1,3 -- 1,2,3,3,4,5
4,5,3,2,3,1 -- 1,2,3,3,4,5
4,5,3,3,1,2 -- 1,2,3,3,4,5
4,5,3,3,2,1 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,3,3,4 -- 1,2,3,3,4,5
5,1,2,3,4,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,2,4,3,3 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,3,2,3,4 -- 1,2,3,3,4,5
5,1,3,2,4,3 -- 1,2,3,3,4,5
5,1,3,3,2,4 -- 1,2,3,3,4,5
5,1,3,3,4,2 -- 1,2,3,3,4,5
5,1,3,4,2,3 -- 1,2,3,3,4,5
5,1,3,4,3,2 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,2,3,3 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,1,4,3,2,3 -- 1,2,3,3,4,5
5,1,4,3,3,2 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,3,3,4 -- 1,2,3,3,4,5
5,2,1,3,4,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,1,4,3,3 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,3,1,3,4 -- 1,2,3,3,4,5
5,2,3,1,4,3 -- 1,2,3,3,4,5
5,2,3,3,1,4 -- 1,2,3,3,4,5
5,2,3,3,4,1 -- 1,2,3,3,4,5
5,2,3,4,1,3 -- 1,2,3,3,4,5
5,2,3,4,3,1 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,1,3,3 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,2,4,3,1,3 -- 1,2,3,3,4,5
5,2,4,3,3,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,3,1,2,3,4 -- 1,2,3,3,4,5
5,3,1,2,4,3 -- 1,2,3,3,4,5
5,3,1,3,2,4 -- 1,2,3,3,4,5
5,3,1,3,4,2 -- 1,2,3,3,4,5
5,3,1,4,2,3 -- 1,2,3,3,4,5
5,3,1,4,3,2 -- 1,2,3,3,4,5
5,3,2,1,3,4 -- 1,2,3,3,4,5
5,3,2,1,4,3 -- 1,2,3,3,4,5
5,3,2,3,1,4 -- 1,2,3,3,4,5
5,3,2,3,4,1 -- 1,2,3,3,4,5
5,3,2,4,1,3 -- 1,2,3,3,4,5
5,3,2,4,3,1 -- 1,2,3,3,4,5
5,3,3,1,2,4 -- 1,2,3,3,4,5
5,3,3,1,4,2 -- 1,2,3,3,4,5
5,3,3,2,1,4 -- 1,2,3,3,4,5
5,3,3,2,4,1 -- 1,2,3,3,4,5
5,3,3,4,1,2 -- 1,2,3,3,4,5
5,3,3,4,2,1 -- 1,2,3,3,4,5
5,3,4,1,2,3 -- 1,2,3,3,4,5
5,3,4,1,3,2 -- 1,2,3,3,4,5
5,3,4,2,1,3 -- 1,2,3,3,4,5
5,3,4,2,3,1 -- 1,2,3,3,4,5
5,3,4,3,1,2 -- 1,2,3,3,4,5
5,3,4,3,2,1 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,2,3,3 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,1,3,2,3 -- 1,2,3,3,4,5
5,4,1,3,3,2 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,1,3,3 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,2,3,1,3 -- 1,2,3,3,4,5
5,4,2,3,3,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
5,4,3,1,2,3 -- 1,2,3,3,4,5
5,4,3,1,3,2 -- 1,2,3,3,4,5
5,4,3,2,1,3 -- 1,2,3,3,4,5
5,4,3,2,3,1 -- 1,2,3,3,4,5
5,4,3,3,1,2 -- 1,2,3,3,4,5
5,4,3,3,2,1 -- 1,2,3,3,4,5
===*/
print('exhaustive');
function cloneArray(x) {
return x.map(function(x) { return x; });
}
function makeNonArray(x) {
var res = {};
var i;
for (i = 0; i < x.length; i++) {
if (x.hasOwnProperty(i)) {
res[i] = x[i];
}
}
res.length = x.length;
return res;
}
function exhaustiveSortTest(input, make_sparse, make_nonarray) {
function f(arr, rem) {
var i, n;
var new_arr, new_rem;
var tmp;
n = rem.length;
if (n == 0) {
if (make_sparse) {
n = arr.length;
arr[10000] = 'foo';
delete arr[10000];
arr.length = n;
} else if (make_nonarray) {
arr = makeNonArray(arr);
}
tmp = dumpValue(arr);
Array.prototype.sort.call(arr);
print(tmp, '--', dumpValue(arr));
} else {
for (i = 0; i < n; i++) {
new_arr = cloneArray(arr);
new_rem = cloneArray(rem);
new_arr.push(new_rem.splice(i, 1)[0]);
f(new_arr, new_rem);
}
}
}
f([], input);
}
try {
exhaustiveSortTest([1,2,3], false, false);
exhaustiveSortTest([1,2,3], true, false);
exhaustiveSortTest([1,2,3], false, true);
exhaustiveSortTest([1,2,3,3,4,5], false, false);
exhaustiveSortTest([1,2,3,3,4,5], true, false);
exhaustiveSortTest([1,2,3,3,4,5], false, true);
} catch (e) {
print(e);
}
/*===
random strings
HHUFO,HGTTC,EB,XXZCOD,PURIUHP,RI,CHWYSF,OJI,JJXXIJN,L,,NQ,WVAEX,XVTO,,AVB,TYGK,STIZF,BXHXOI,JAAAEP,LAA,T,,DLNOT,YLNNTPU,MSAYDEL,,LHANS,WEXBQA,VO,TSKQ,ISRVA,YF,RUCG,GEDYA,YWLSEF,VRNEB,NDL,JDXQSX,QBQHXQV,PMMHKJP,U,L,HMNI,DGNWU,O,GVMP,ZEGR,ZAU,KHN,WUWY,UDKO,ESUUIU,UOACAG,MH,JTFVEFS,HXFEVGT,GCEEUNJ,M,,I,OPQX,C,MMBLWY,OWNF,TTREF,H,GQER,AXMRWU,JI,FGGPODO,OYNMRTN,UPECK,JMXWC,WPJBD,HUC,DAFTQU,,XZMKVBE,FCULGUE,BVKNXBZ,V,ISRQUAC,,CVHTQO,MTS,MMKZAR,QARRUSC,,YCUGF,T,FPIL,WP,UI,,QV,ZL,OFC,W,NNCM,GBKM,TLIETZY,ANKPQ,XP,T,CLZJ,UTDIEIQ,Z,HCO,J,RMS,BOKYQGP,J,IFLZPH,AZ,NYQLDLE,EVTT,BNL,PMGYC,XFXC,OIH,STWGQK,XXO,KV,SLDUUBE,Y,FVE,MVZLBC,BJPOZ,NBVX,HBDGFNA,LCYRXLC,WN,I,UF,KISSMWZ,NOAVHJ,,DUI,TWFGW,MEMVI,TQCO,IONPM,PD,DDKM,MRNELYY,,,,VFG,DTLKMB,LQ,LL,NXN,O,IB,QLXK,XZ,XWMGXTM,F,WJEIJ,FMRZV,,PLZBETX,Z,JOI,WXTZOHR,PYQQTVJ,GERTX,PECCG,YIJ,V,ZB,LSWXC,SVYT,OTG,XSAQ,BOJRF,NLZOVP,E,K,KJAXXFI,,,QKFLA,T,QWGXC,XC,N,HGZU,X,ORJBXPC,ABTJME,J,JGEKKS,SKWRBJC,AMVFH,IKELO,JUDCX,OWJNCU,QIKKLO,QGBAB,,I,DWMAW,USOWICG,W,,LGKK,O,AELKVHW,OSHHFY,YB,ORNJFG,Z,ZWXCIF,NPOCDC,DYXQQR,FHQYVAS,ASTAHMQ,QFDFRLL,D,,ZRF,HHSF,ECY,RVSOF,N,Q,,NH,YIBNW,ZGDOM,FLJQGLL,,VETT,P,VEMFXV,KEBJYGO,,YWLA,UWJMW,GXZZDY,FH,KICXEY,TWIQVGQ,HLSEQIA,T,BOSMAT,WVDEWXE,TWBYU,S,ZDXX,UR,GVV,GN,KLEANJV,GBEG,APYEF,M,DT,ECDPV,FZZ,SVMIBFC,BOQKCFT,ZZAA,MQ,K,DIOS,DHHCP,SYKZ,QCVHDLJ,DOZCZTF,,,SVYASHC,HCCQFBX,,DANIVSX,PDV,ZLIE,IAF,TLZ,OS,,TQF,EIDKB,ZLRED,NABKU,,NJZ,BHFJI,Z,LFUJ,ZRNQF,TD,ATQR,IKH,,,FV,TCUMIA,JO,LEPZ,C,LU,SIWR,,,JNLXLQ,A,MNP,FW,AYH,R,,GDU,ZSV,QQT,YEZTPT,NHXF,FOFN,G,UAQ,,,,,VTRBLXX,FMNTN,,VIW,RTYTW,GYHWAXP,RQ,,,,B,XEZ,MDL,R,MZN,YLFKW,JGKD,NUG,,LDVGTF,,,T,GFBH,BQUDVWY,,F,MTZCMO,P,R,QRDNNM,EV,IXOU,Y,TKRQLLW,,,LB,JL,GKUNIM,,UJVZ,DCRA,FBKMT,SGOE,LFXFPP,D,,JX,,EH,SRLILSW,HC,IH,PJ,CDVMUQZ,,NANQS,ILBDE,HNJ,EVS,GMPV,C,VJR,NMRFP,,LJAIME,IVPRQ,WFJHF,,LKJFC,EWFV,C,MPMUQ,GZA,PSWI,F,UEPTMQB,UJTKXI,JICQU,BQYUQFH,STD,PYZDVLO,RTQHMFQ,,,Y,,ORDO,GRYSVBB,D,RGHX,,ZRHFV,,ZJJN,ZDUBTE,BP,GIQCRB,T,HAELF,OF,OFW,,RKU,CGUG,HPABTBO,TWBLQ,UQ,MOHP,QOITYK,TQSYM,KSI,OZOQ,OBAOJGI,XPUQH,JH,YTPODMM,PHT,KLEXSN,SEFL,JSFAC,,SYKDQLG,ILKYL,ECLUL,ISU,J,E,GFAXPI,COPJGA,PA,ZDBEIN,ZEEJC,J,,,U,GNSZUGY,RFFBEU,UUV,I,,,FOBC,AFUBP,ASKLMO,,V,VFL,LOA,,VQ,OTN,,,SE,A,NEQMRJ,G,NASBBUP,K,B,FZEGY,,QV,KLV,OUDM,,H,H,GLKCXXO,VXPQL,JJHI,BORV,BZV,,Q,RPD,WMSUY,PC,QZIB,MAR,PGLIGQW,YUVX,QOBT,ALFI,,QIROAK,OYZYH,H,D,KYEB,VPMN,QYLV,,JV,VI,LK,ICWUO,YTVE,HQPD,SM,GUCMOZ,JGLG,DS,NNZMCD,ZYOF,YIDF,KLZPBW,,NVGVUZ,,BIDFMXB,BULRE,,,OXA,,MOUA,ZBDH,PYCDZM,VEGB,HSXWZDD,NQ,UZ,EGCWCBW,IV,XK,S,KEIWWZ,SHARSKX,A,VIO,FVLNLZZ,OINR,,ASJBMI,LQE,FFJ,ISYRCX,TBW,,AFWGH,TSBBXB,WJJUT,X,VKDBLJ,,RVI,CJN,FJ,,IJBZUL,UGEVRNQ,PUOMXL,ULFN,OJORLZL,X,NG,WJMC,SONW,B,,LSL,ABEBQ,QF,N,SJC,VMOMPI,ZZI,MVVYWX,,,B,WTWHPCJ,PJYQ,HL,JC,,CQ,VCEEY,BDESUL,HXVOLX,RKDWVK,VYKR,KIBK,HJSV,HRML,LE,E,XGP,LXRSBOH,MXCMI,HCDRU,YDZSLWJ,,NVOAD,KYDPM,,KDHL,UCDRZ,L,UAR,,,WSK,AU,YGWBE,KZ,DCGV,AIB,ZOZBQNV,SLI,GFW,QC,OOAQ,SYRS,G,,LZIVEP,MLIICP,UIYS,QDYO,FBEMRF,ZDEIU,KDOQ,PGRN,N,YNWMXNP,YPUMTEV,,ZVGGGDW,S,BZDF,EAEOQJ,JVTWUXW,KBXL,LOJL,,K,ODEUOSG,VQFME,AUDAM,KM,COQBD,OZ,MK,QXJQWGX,NO,VQAULQE,BOTSF,KPUJEPR,UPPGM,LKPN,,,K,,FHZD,ALBNWLB,KZI,VAGTIKX,HBNK,,DRVRAT,X,WG,XJIP,IRP,,TMWGZD,EJZYFAY,L,BIZGOQG,OSL,U,HLJUM,B,IT,BWKKEAM,RXRTOR,QXIPK,BC,XIRW,GGPL,BFF,QP,GC,YGT,OLA,K,W,JIMZIKZ,,IS,BKKL,K,F,EVDE,WBKSAIH,HR,SZYYYAN,V,,,B,XKOJJWO,PVG,,KXVNH,HWQUUS,XLY,QIK,CL,OP,,ZBN,VAY,TJPUML,BFMR,JCKI,WYJ,MIPVAH,OJYI,RF,WWI,AYBBNO,YQAPCPL,WJ,ZDLMB,FHG,OONTRE,A,ZXBYJAO,YQWHM,,MJ,NQFUR,UVOOXP,DYD,UIBTAT,HCCQEIZ,KFEV,XOEU,,OJ,WNJZS,J,KSSWWIQ,Z,HTQDIEQ,WACPXQQ,,TSADGMZ,SKPIAVL,M,PBFPZ,IWYMJH,KSZLOS,OTVJGUI,R,OOCZTW,RGCY,GFWFNQT,TSDH,IAQEQQ,MT,ROHI,KQNDDKM,WMK,VH,SFWQ,D,GLO,C,DSABA,R,DLMILL,XQJV,,P,ACPVXE,DXT,,C,,GSERL,GBXRTS,TY,GAFC,ASJNJE,,CZJMBV,T,HNCN,FBSGM,PHBD,C,DKJ,TR,QDJTH,S,KNIJATI,KIFPYC,VS,H,M,MHTVDX,MSII,KHGWBY,KUVGRRN,BHHJ,SG,AP,JR,DT,PBMJPIE,V,VCJRJL,TCJA,,,IOLT,KWSCVV,XZKF,X,YUWWCD,AEDPGE,ZA,DEUI,SZUNQ,ZJUUSJK,IV,VAJCUON,WMQCMGW,,MYBXUSM,ZQGKCNM,G,JJQXMFL,,ELHK,JIIMLZA,PXUXA,YTDDOV,F,ODNM,SYNJ,APJYS,FDQA,G,TSXX,LKRTEQ,,VOTETW,PQBJ,ZV,UD,QG,DVBUIO,OBV,LNCFSYS,YTA,IJTB,VR,EMV,OTRFH,BZR,DU,,NB,XSGISO,HCFY,AKWILY,AXZIKV,GTQTB,,,MUSTTU,CGS,,N,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,AA,AA,AA,AA,AA,AAA,AAHMV,AAHWQ,AAJVVB,AALPAW,AAMTJQ,AASQOT,AAYXJM,AB,AB,ABDIGRW,ABDY,ABEBQ,ABFNGK,ABH,ABPKIVI,ABRMBH,ABTJME,AC,AC,ACBW,ACJLO,ACK,ACKI,ACMFZ,ACMNSQT,ACPCM,ACPVXE,ACQFUWX,ACRRLT,ACSFMMV,ACWU,ACYQOT,AD,ADD,ADLBECW,ADNFC,ADTDU,ADWZ,AE,AEDPGE,AEDRM,AEFCXTE,AEI,AELKVHW,AEM,AERDIZS,AETRKHG,AEYSJ,AF,AFCWSDW,AFGDH,AFGWC,AFKB,AFOLWK,AFUBP,AFUHDWQ,AFVAVN,AFWGH,AFZODT,AG,AG,AGFPT,AGI,AGJKC,AGJZ,AGMVP,AGRCRZ,AGUJS,AGV,AH,AH,AHAVFVC,AHFUEZX,AHG,AHHF,AHHXWAU,AHKSST,AHM,AHTPH,AHVXFJ,AHW,AHY,AHZXMWW,AI,AI,AIAEO,AIB,AIC,AIGLVCT,AIIGCH,AIPLPU,AIT,AIVOIYX,AIVV,AJ,AJCIC,AJELS,AJFU,AJGZ,AJJD,AJL,AJNT,AJODAY,AJPC,AJQDPD,AK,AK,AK,AK,AKKKOUW,AKKYZC,AKNNOG,AKQZU,AKWILY,AKWXQ,AKXWWTM,AL,AL,AL,ALBNL,ALBNWLB,ALC,ALFHEWC,ALFI,ALGWK,ALM,ALMUBJ,ALO,ALP,ALPGMBS,ALQZTKF,ALRCP,ALRIIR,ALT,ALVOMT,AM,AMBNXV,AMEV,AMFEIQH,AMFM,AMID,AMMED,AMNUZ,AMTGTDC,AMVFH,AN,ANER,ANID,ANKPQ,ANNXQ,ANOJK,ANZGD,AO,AO,AOAOK,AOCIG,AOTFRV,AOUWFD,AOVIC,AOXECAR,AOYDZ,AP,APA,APBDHF,APGHWWP,APJYS,APM,APQ,APTFL,APTHIVB,APYEF,AQAI,AQDM,AQTKTGN,AQVYX,AQXH,AR,AR,AR,AR,ARAWDGH,ARHSJXV,ARLUW,ARVXFQA,ARW,AS,AS,AS,AS,ASBNK,ASD,ASEBAHE,ASERFK,ASIE,ASJBMI,ASJNJE,ASK,ASKLMO,ASOTDYS,ASRD,ASTAHMQ,ASXXOID,ASZ,AT,ATAUG,ATAW,ATCUB,ATDSKJ,ATEXIE,ATHOAIT,ATLAGN,ATLHI,ATNF,ATODZ,ATPHQON,ATQCT,ATQR,ATVERPO,ATYH,AU,AUCEA,AUDAM,AUEPD,AUF,AUG,AUKGUXD,AUKWZE,AUVVQE,AV,AVAIS,AVB,AVCIRT,AVFMC,AVG,AVRSLEM,AVT,AVT,AVV,AVV,AWCDZQ,AWFUC,AWFX,AWLU,AWMZA,AWNBO,AWOTW,AWQQAN,AWSAB,AWYYM,AWZ,AX,AXEPDG,AXFK,AXJQRTG,AXMRWU,AXNQN,AXSG,AXUOQXD,AXV,AXW,AXWAPVL,AXXR,AXZIKV,AXZU,AY,AY,AYBBNO,AYCXU,AYDOBY,AYFFOCA,AYH,AYKCJW,AYLRJXK,AYOMB,AYR,AYW,AYXTIIM,AYZDM,AYZFP,AYZJDGH,AZ,AZ,AZ,AZ,AZEZSPJ,AZFA,AZG,AZHUBYC,AZL,AZLWDK,AZPOD,AZQJC,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,BA,BACLG,BADOS,BAI,BAIGAN,BAIJQY,BAMOTRU,BASY,BAXRN,BAY,BB,BBAVMJP,BBEZYXI,BBJH,BBKE,BBMNBNE,BBOEU,BBSD,BBXFNHE,BC,BC,BC,BCBD,BCGQQRR,BCITEOX,BCLUIBE,BCROJJ,BCSTP,BCURMD,BCV,BCW,BCYRQT,BD,BD,BD,BD,BDC,BDDZVI,BDESUL,BDMTSXY,BDMZ,BDSKGH,BDVH,BDVR,BDWMY,BE,BEAVG,BECHCG,BEHRN,BEHS,BEMCB,BENFLD,BESAHS,BETCEG,BETNQ,BEXJPH,BF,BF,BFAJSE,BFAK,BFDAG,BFDVZ,BFEEAJY,BFF,BFHGV,BFHUL,BFJYQVB,BFMR,BFMU,BFPXHCO,BFRWIM,BFV,BG,BG,BGESQHY,BGNP,BH,BH,BHCV,BHFJI,BHHJ,BHHQ,BHKETW,BHM,BHOI,BHOISWU,BHQ,BHTY,BHU,BHVXRD,BHWB,BHXDN,BHY,BHZ,BI,BI,BI,BIC,BID,BIDFMXB,BIF,BIH,BIKT,BINDIE,BINT,BIUK,BIXF,BIZGOQG,BJ,BJC,BJEWFKI,BJGUCJ,BJGWQVS,BJHEXQ,BJNG,BJPOZ,BJQOEE,BJTK,BJUFH,BJYIE,BK,BKBKCI,BKCFQU,BKF,BKFLL,BKGVN,BKIK,BKIOPM,BKKL,BKLDWH,BKQY,BKRE,BKWJM,BKWJUYG,BKWW,BKX,BKZAP,BL,BLE,BLFTC,BLGYZS,BLJGNDO,BLKR,BLLL,BLOERZ,BLPIK,BLR,BLRR,BLVRNN,BLYWY,BM,BM,BMAVV,BMDLL,BMFW,BMJDVB,BMKVENY,BMO,BMVF,BMYVW,BN,BN,BN,BNDJZV,BNFJV,BNFUEBC,BNIHVL,BNIW,BNKUFZ,BNL,BNMSQ,BNRBXBU,BNSP,BNW,BNX,BNY,BO,BOF,BOG
true
===*/
// http://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use
print('random strings');
var rnd_x = 123;
function prng(max) {
rnd_x = (rnd_x * 16807) % 0x7fffffff;
return rnd_x % max;
}
function rndString(maxLen) {
var len = prng(maxLen);
var i;
var res = '';
for (i = 0; i < len; i++) {
res += String.fromCharCode(0x41 + prng(26));
}
return res;
}
function randomStringsTest() {
var arr = [];
var i;
var str1, str2;
for (i = 0; i < 10000; i++) {
arr.push(rndString(8));
}
print(arr);
arr.sort();
str1 = arr.toString();
print(str1);
arr.sort();
str2 = arr.toString();
print(str1 === str2);
}
randomStringsTest();
/*===
attributes
0 value=foo writable=true enumerable=false configurable=true
1 value=bar writable=true enumerable=true configurable=true
length value=2 writable=true enumerable=false configurable=false
success
0 value=bar writable=true enumerable=false configurable=true
1 value=foo writable=true enumerable=true configurable=true
length value=2 writable=true enumerable=false configurable=false
0 value=foo writable=true enumerable=false configurable=false
1 value=bar writable=true enumerable=true configurable=false
length value=2 writable=true enumerable=false configurable=false
success
0 value=bar writable=true enumerable=false configurable=false
1 value=foo writable=true enumerable=true configurable=false
length value=2 writable=true enumerable=false configurable=false
0 nonexistent
1 value=bar writable=true enumerable=false configurable=true
length value=2 writable=true enumerable=false configurable=false
success
0 value=bar writable=true enumerable=true configurable=true
1 nonexistent
length value=2 writable=true enumerable=false configurable=false
0 nonexistent
1 value=bar writable=true enumerable=false configurable=false
length value=2 writable=true enumerable=false configurable=false
TypeError
0 value=bar writable=true enumerable=true configurable=true
1 value=bar writable=true enumerable=false configurable=false
length value=2 writable=true enumerable=false configurable=false
===*/
print('attributes');
function attributeTest() {
var obj;
// attributes are kept when both swapped elements exist: two [[Get]]+[[Put]]
// pairs are used
obj = [];
Object.defineProperties(obj, {
'0': { value: 'foo', writable: true, enumerable: false, configurable: true },
'1': { value: 'bar', writable: true, enumerable: true, configurable: true },
});
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
test(obj, undefined, true);
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
// same test but make attributes non-configurable; this must not prevent sorting
// because writability is sufficient when swapped pairs exist
obj = [];
Object.defineProperties(obj, {
'0': { value: 'foo', writable: true, enumerable: false, configurable: false },
'1': { value: 'bar', writable: true, enumerable: true, configurable: false },
});
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
test(obj, undefined, true);
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
// if only one end of the swapped pair exists, the other is [[Delete]]'d
// and [[Put]] will create a property with default [[Put]] attributes, i.e.
// writable, configurable, and enumerable
obj = [];
Object.defineProperties(obj, {
'1': { value: 'bar', writable: true, enumerable: false, configurable: true },
});
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
test(obj, undefined, true);
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
// same test but '1' is non-configurable -> TypeError
//
// The final state of 'obj' is implementation defined: the specification doesn't
// mandate whether or not the [[Put]] for '0' should precede the [[Delete]] for '1'.
// The current implementation will first [[Put]] and then [[Delete]], so we can
// test for the result reliably.
obj = [];
Object.defineProperties(obj, {
'1': { value: 'bar', writable: true, enumerable: false, configurable: false },
});
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
test(obj, undefined, true);
printDesc(obj, '0'); printDesc(obj, '1'); printDesc(obj, 'length');
}
try {
attributeTest();
} catch (e) {
print(e);
}
/*===
comparefunction
1,3e0,5,object,9.8
9.8,object,5,3e0,1
1
TypeError
TypeError
TypeError
foo,undefined,undefined,undefined,undefined,undefined,nonexistent,nonexistent,nonexistent,nonexistent
===*/
print('comparefunction');
function compareFunctionTest() {
// the default comparison function compares strings with ToString(); verify
// its behavior first
// basic ascending numeric sort
test([ '1', 5, '3e0', '9.8', { valueOf: function() { return '7' } }],
[ function(a,b) { return Number(a) - Number(b); } ]);
// basic descending numeric sort
test([ '1', 5, '3e0', '9.8', { valueOf: function() { return '7' } }],
[ function(a,b) { return Number(b) - Number(a); } ]);
// compareFn TypeError for a non-callable compareFn only occurs when
// it is about to be called for the first time
test([1], [ 'non-callable' ]); // *no* TypeError
test([1,2], [ 'non-callable' ]); // -> TypeError
test([1,2], [ {} ]); // -> TypeError
test([1,2], [ { toLocaleString: 'non-callable' } ]); // -> TypeError
// compareFn only gets called if both SortCompare() arguments exist
// and neither is 'undefined'. In this test only one element exists
// and is not undefined, so no compareFn calls can be made
obj = [];
obj.length = 10;
obj[0] = undefined;
obj[2] = undefined;
obj[3] = 'foo';
obj[6] = undefined;
obj[7] = undefined;
obj[9] = undefined;
test(obj, [ function(a,b) { print('should never be called'); } ]);
}
try {
compareFunctionTest();
} catch (e) {
print(e);
}
/*===
inherited
4 3,2,4,1
1,2,3,4
true true true true
3 4
4 ,,4,1
1,4,nonexistent,nonexistent
1,4,4,
true true false false
===*/
/* Behavior for inherited indices within the valid length range is implementation
* dependent. Since we use [[Put]] when a property exists:
*
* - a new property will be created into the inherited position if necessary
* - a [[Delete]] to the inherited position will be done but will be ineffective
* (the inherited property won't be deletd).
*/
print('inherited');
function inheritedTest() {
var obj;
Array.prototype['2'] = '4';
// array with no missing positions (with '2' inherited); gets an own property "2"
obj = [];
obj[0] = '3';
obj[1] = '2';
obj[3] = '1';
print(obj.length, obj);
test(obj);
print(obj.hasOwnProperty(0), obj.hasOwnProperty(1), obj.hasOwnProperty(2), obj.hasOwnProperty(3));
print(obj[2], Array.prototype[2]);
// attempt to delete '2' will fail silently (as [[Delete]] only
// deletes own properties and does not cause an error for a
// non-existent property even with Throw flag set)
obj = [];
obj[3] = '1';
print(obj.length, obj);
test(obj); // 1,4,nonexistent,nonexistent because test() only prints own properties
print(obj);
print(obj.hasOwnProperty(0), obj.hasOwnProperty(1), obj.hasOwnProperty(2), obj.hasOwnProperty(3));
delete Array.prototype['2'];
}
try {
inheritedTest();
} catch (e) {
print(e);
}
/*===
protected
4
TypeError
false
6
TypeError
true
4
TypeError
4
4
1,2,3,4
1
4
SetterError
4
4
1,3,nonexistent,nonexistent
4
===*/
/* Test various cases where extensibility, writability, configurability, or
* a setter exception prevents sort from completing. The expected result
* on the result array cannot be known for certain as the current qsort()
* is not deterministic. Here we just check that TypeErrors are thrown as
* appropriate.
*
* The specification allows much latitude here, stating that behavior is
* implementation dependent. Duktape attempts to throw a TypeError whenever
* the operation cannot be finished and to never violate property attribute
* protections (e.g. create an element in a non-extensible object, modify
* a non-writable property, etc).
*/
print('protected');
function protectedTest() {
var obj;
// index '2' missing and should not be created
obj = [];
obj[0] = 4;
obj[1] = 1;
obj[3] = 2;
Object.preventExtensions(obj);
print(obj.length); // 4
test(obj, [], true);
print(obj.hasOwnProperty(2)); // false
// non-configurable item within length range; the sort result should be
// [1,2,3,4,<nonexistent>,<nonexistent>], so index '5' should be deleted
// but can't
obj = [];
Object.defineProperties(obj, {
'0': { value: 4, writable: true, enumerable: true, configurable: true },
'1': { value: 1, writable: true, enumerable: true, configurable: true },
'2': { value: 2, writable: true, enumerable: true, configurable: true },
'5': { value: 3, writable: true, enumerable: true, configurable: false }
});
print(obj.length); // 6
test(obj, [], true);
print(obj.hasOwnProperty(5)); // true
// non-writable item within length range; the sort result should be
// [1,2,3,4] so item '0' needs to be written but can't
obj = [];
Object.defineProperties(obj, {
'0': { value: 4, writable: false, enumerable: true, configurable: true },
'1': { value: 1, writable: true, enumerable: true, configurable: true },
'2': { value: 2, writable: true, enumerable: true, configurable: true },
'3': { value: 3, writable: true, enumerable: true, configurable: true }
});
print(obj.length);
test(obj, [], true);
print(obj[0]); // 4
// accessor element within item range; accessor stores value without an error
// so this sort should complete normally
obj = {};
Object.defineProperties(obj, {
'my0': { value: 4, writable: true, enumerable: false, configurable: false },
'0': { get: function() { return this.my0; },
set: function(v) { this.my0 = v; },
enumerable: true,
configurable: true },
'1': { value: 1, writable: true, enumerable: true, configurable: true },
'2': { value: 2, writable: true, enumerable: true, configurable: true },
'3': { value: 3, writable: true, enumerable: true, configurable: true },
'length': { value: 4, writable: true, enumerable: true, configurable: true }
});
print(obj.length);
test(obj); // can print because result deterministic
print(obj.my0);
// accessor element within item range; accessor causes error so sort should
// fail (propagating the specific error without wrapping).
obj = {};
Object.defineProperties(obj, {
'my0': { value: 4, writable: true, enumerable: false, configurable: false },
'0': { get: function() { return this.my0; },
set: function(v) { var e = new Error('setter rejects'); e.name = 'SetterError'; throw e; },
enumerable: true,
configurable: true },
'1': { value: 1, writable: true, enumerable: true, configurable: true },
'2': { value: 2, writable: true, enumerable: true, configurable: true },
'3': { value: 3, writable: true, enumerable: true, configurable: true },
'length': { value: 4, writable: true, enumerable: true, configurable: true }
});
print(obj.length);
test(obj, [], true);
print(obj.my0);
// protected 'length' is not a problem: length never changes during a sort
obj = {};
Object.defineProperties(obj, {
'1': { value: 1, writable: true, enumerable: true, configurable: true },
'3': { value: 3, writable: true, enumerable: true, configurable: true },
'length': { value: 4, writable: false, enumerable: false, configurable: false }
});
print(obj.length);
test(obj);
print(obj.length);
// FIXME: test objects with protected elements / accessors outside valid length
// range? They should cause no effect on sorting.
}
try {
protectedTest();
} catch (e) {
print(e);
}
/* FIXME: sort test for array whose length is above 32-bit range (e.g. as a result
* of a push().
*/