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 ();
	}
}
 

D Language Online Compiler

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.

About D language

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.

  • More productive
  • Modeling code according to your requirement.
  • Very good choice for open source software development.

Syntax help

Variables

Syntax

datatype variable-names;

Loops

1. If-Else:

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.

2. For:

For loop is used to iterate a set of statements based on a condition.

for(Initialization; Condition; Increment/decrement){  
  //code  
} 

3. While:

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 
}  

4. Do-While:

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); 

Arrays

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 ];

Functions

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.

Syntax

return_type function_name(parameters) {  
  //code
}

How to call a Function

function_name (parameters)