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+1)/2; _++)
{
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