#include <bits/stdc++.h>
using namespace std;
const int N=205;
const int Q=20005;
int n, arr[N] ;
vector<pair<int,int>>edges;
vector<int>v;
int Connected(int a, int i, int j);
void DescribeDesign(std::vector<std::pair<int, int>> result);
void ToyDesign(int n, int max_ops)
{
vector<pair<int,int>>result;
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
int x=Connected(0, i, j);
if(x==0)
{
result.push_back({i, j});
}
}
}
DescribeDesign(result);
}
int Connected(int a, int i, int j)
{
cout<<"? "<<a<<' '<<i<<' '<<j<<endl;
int k;
cin>>k;
return k;
}
void DescribeDesign(vector<pair<int,int>> result)
{
cout<<"! "<<(int)result.size()<<endl;
for(auto it:result)
{
cout<<it.first<<' '<<it.second<<endl;
}
}
int main()
{
cin>>n;
ToyDesign(n,n);
return 0;
}