using System; class Program { static void Main() { // 入力を読み取る int N = int.Parse(Console.ReadLine()); string[] input = Console.ReadLine().Split(); int[] A = new int[N]; for (int i = 0; i < N; i++) { A[i] = int.Parse(input[i]); } int X = int.Parse(Console.ReadLine()); // 4x4の表を全探索 int[,] f = new int[4, 4]; // 1, 2, 3, 4 の組み合わせで表を試す for (int i1 = 1; i1 <= 4; i1++) { for (int i2 = 1; i2 <= 4; i2++) { for (int i3 = 1; i3 <= 4; i3++) { for (int i4 = 1; i4 <= 4; i4++) { // 表 f を設定 f[0, 0] = i1; f[0, 1] = i2; f[0, 2] = i3; f[0, 3] = i4; f[1, 0] = i2; f[1, 1] = i3; f[1, 2] = i4; f[1, 3] = i1; f[2, 0] = i3; f[2, 1] = i4; f[2, 2] = i1; f[2, 3] = i2; f[3, 0] = i4; f[3, 1] = i1; f[3, 2] = i2; f[3, 3] = i3; // 左結合で f(A1, A2, ..., AN) を計算する int result = A[0]; for (int i = 1; i < N; i++) { result = f[result - 1, A[i] - 1]; } // 結果が X ならば表を出力 if (result == X) { Console.WriteLine("Yes"); for (int i = 0; i < 4; i++) { Console.WriteLine($"{f[i, 0]} {f[i, 1]} {f[i, 2]} {f[i, 3]}"); } return; } } } } } // 見つからなかった場合 Console.WriteLine("No"); } }