import std.algorithm; import std.conv; import std.math; import std.range; import std.stdio; import std.string; import std.typecons; immutable int mod = 998_244_353; bool isGood (int [] p) { auto n = p.length.to !(int); auto q = new int [n]; foreach (i; 0..n) { q[p[i]] = i; } return n.iota.all !(i => abs (p[i] - q[i]) < 2); } void main () { auto tests = readln.strip.to !(int); foreach (test; 0..tests) { auto n = readln.strip.to !(int); int [] [] answers; auto p = n.iota.array; do { if (p.isGood) { answers ~= p.dup; } } while (nextPermutation (p)); writeln (answers.length); foreach (ref r; answers) { int [] [] res; auto b = new bool [n]; foreach (i; 0..n) { if (!b[i]) { int [] temp; int j = i; while (!b[j]) { temp ~= j + 1; b[j] = true; j = r[j]; } res ~= temp; } } if (res.count !(t => t.length > 2) < 2) { continue; } writefln !("%((%(%s %))%| %)") (res); } stdout.flush (); } }
Write, Run & Share D language code online using OneCompiler's D language online compiler for free. It's one of the robust, feature-rich online compilers for D language. Getting started with the OneCompiler's D language compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as D
and start coding.
D language is a general purpose object oriented programming language similar to C in syntax created by Walter Bright and released in 2001. Dlang is more powerful than C++ as it has gained good features from C++ and also has additional features added.
datatype variable-names;
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type array-name [ array-size ];
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
return_type function_name(parameters) {
//code
}
function_name (parameters)