#include <bits/stdc++.h>

using namespace std;

int res;

void ask(int t, int i, int j, int x)
{
    printf("? %d %d %d %d\n",t,i,j,x);
    fflush(stdout);

    cin>>res;
}

void up()
{
    int n;
    cin>>n;

    int min_pos=0;
    for(int i=1; i<n; i+=2)
    {
        ask(2,i,i+1,1);
        if(res==1)
        {
            min_pos=i;
            break;
        }
        else if(res==2)
        {
            ask(2,i+1,i,1);
            if(res==1)
            {
                min_pos=i+1;
                break;
            }
        }
    }
    if(!min_pos) min_pos=n;

    int p[n+1];
    p[min_pos]=1;

    for(int i=1; i<=n; i++)
    {
        if(i==min_pos) continue;

        ask(1,min_pos,i,n-1);
        p[i]=res;
    }

    printf("! ");
    for(int i=1; i<=n; i++) printf("%d ",p[i]);

    puts("");
    fflush(stdout);
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int tc;
    cin>>tc;

    while(tc--) up();

    return 0;
}