class EightQueens {
	static bool[]
		up =  { true, true, true, true, true, true, true, true, true, true, true, true, true, true, true },
		down = (bool[])up.Clone(),
		rows = new bool[8] { true, true, true, true, true, true, true, true };
	static public void Main() {
		for (int i = 0; i < up.Length; i++)
			up[i] = down[i] = true;
		for (int i = 0; i < rows.Length; ++i)
			rows[i] = true;
		queens(0, new int[8]);
	}
	static void queens(int c, int[] x) {
		for (int r = 0; r < rows.Length; r++)
			if (rows[r] && up[r-c+7] && down[r+c]) {
				rows[r] = up[r-c+7] = down[r+c] = false;
				x[c] = r;
				if (c == 7)
					print(x);
				else
					queens(c + 1, x);
				rows[r] = up[r-c+7] = down[r+c] = true;
			}
	}
	static void print(int[] x) {
		foreach (int c in x)
			System.Console.Write("{0}", c + 1);
		System.Console.WriteLine();
	}
}
