#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FAST1 ios_base::sync_with_stdio(false);
#define FAST2 cin.tie(NULL);
ll getpos(ll n){
for(ll i=0;i<n-1;i+=2){
ll x;
cout<<"? 1 "<<i+1<<" "<<i+2<<" "<<n-1<<endl;
cin>>x;
if(x==n)
return i+1;
if(x==n-1){
cout<<"? 1 "<<i+2<<" "<<i+1<<" "<<n-1<<endl;
cin>>x;
if(x==n)
return i;
}
}
return n-1;
}
void solve(){
ll n;
cin>>n;
ll a[n];
ll pos=getpos(n);
a[pos]=n;
for(ll i=0;i<n;i++){
if(i==pos)
continue;
cout<<"? 2 "<<i+1<<" "<<pos+1<<" "<<1<<endl;
cin>>a[i];
}
cout<<"! ";
for(ll i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main(){
FAST1;
FAST2;
ll t;
cin>>t;
while(t--){
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBGQVNUMSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKI2RlZmluZSBGQVNUMiBjaW4udGllKE5VTEwpOwpsbCBnZXRwb3MobGwgbil7CiAgICBmb3IobGwgaT0wO2k8bi0xO2krPTIpewogICAgICAgIGxsIHg7CiAgICAgICAgY291dDw8Ij8gMSAiPDxpKzE8PCIgIjw8aSsyPDwiICI8PG4tMTw8ZW5kbDsKICAgICAgICBjaW4+Png7CiAgICAgICAgaWYoeD09bikKICAgICAgICAgICAgcmV0dXJuIGkrMTsKICAgICAgICBpZih4PT1uLTEpewogICAgICAgICAgICBjb3V0PDwiPyAxICI8PGkrMjw8IiAiPDxpKzE8PCIgIjw8bi0xPDxlbmRsOwogICAgICAgICAgICBjaW4+Png7CiAgICAgICAgICAgIGlmKHg9PW4pCiAgICAgICAgICAgICAgICByZXR1cm4gaTsKCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG4tMTsKfQp2b2lkIHNvbHZlKCl7CiAgICBsbCBuOwogICAgY2luPj5uOwogICAgbGwgYVtuXTsKICAgIGxsIHBvcz1nZXRwb3Mobik7CiAgICBhW3Bvc109bjsKICAgIGZvcihsbCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoaT09cG9zKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBjb3V0PDwiPyAyICI8PGkrMTw8IiAiPDxwb3MrMTw8IiAiPDwxPDxlbmRsOwogICAgICAgIGNpbj4+YVtpXTsKICAgIH0KICAgIGNvdXQ8PCIhICI7CiAgICBmb3IobGwgaT0wO2k8bjtpKyspCiAgICAgICAgY291dDw8YVtpXTw8IiAiOwogICAgY291dDw8ZW5kbDsKfQoKaW50IG1haW4oKXsKICAgIEZBU1QxOwogICAgRkFTVDI7CiAgICBsbCB0OwogICAgY2luPj50OwogICAgd2hpbGUodC0tKXsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9