using System; using System.Collections.Generic; using Debug = System.Diagnostics.Debug; using StringBuilder = System.Text.StringBuilder; using System.Numerics; using static System.Linq.Enumerable; using static System.Math; namespace Program { public class Solver { /// /// Odd-even sort /// public void Solve() { var n = int.Parse(Console.ReadLine()); var A = Enumerate(n, x => x + 1); for (int _ = 0; _ < n; _++) { var B = new int[2 * n]; for (int i = 0; i + 2 <= n; i += 2) { B[i] = A[i]; B[i + 1] = A[i + 1]; } Console.WriteLine("? {0}", B.AsJoinedString()); var ans = Console.ReadLine().Split(); for (int i = 0; i * 2 < n; i++) { if (ans[i] == ">") Swap(ref A[i * 2], ref A[i * 2 + 1]); } Array.Clear(B, 0, n); for (int i = 0; i + 2 < n; i += 2) { B[i] = A[i + 1]; B[i + 1] = A[i + 2]; } Console.WriteLine("? {0}", B.AsJoinedString()); ans = Console.ReadLine().Split(); for (int i = 0; i * 2 < n; i++) { if (ans[i] == ">") Swap(ref A[i * 2 + 1], ref A[i * 2 + 2]); } } Console.WriteLine("! {0}", A.AsJoinedString()); } static T[] Enumerate(int n, Func f) { var a = new T[n]; for (int i = 0; i < n; ++i) a[i] = f(i); return a; } static public void Swap(ref T a, ref T b) { var tmp = a; a = b; b = tmp; } } } #region main static class Ex { static public string AsString(this IEnumerable ie) { return new string(System.Linq.Enumerable.ToArray(ie)); } static public string AsJoinedString(this IEnumerable ie, string st = " ") { return string.Join(st, ie); } static public void Main() { var solver = new Program.Solver(); solver.Solve(); } } #endregion