#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
int Connected(int a , int i , int j){
cout << "? " << a << ' ' << i << ' ' << j << endl;
cout.flush();
int k;
if(!(cin >> k)) exit(0);
return k;
}
void DescribeDesign(vector<pair<int,int>> result){
cout << "! " << (int)result.size() << endl;
for(auto it:result) cout << it.F << ' ' << it.S << endl;
cout.flush();
}
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 main(){
int n, m, max_ops;
cin >> n >> m >> max_ops;
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
}
ToyDesign(n, max_ops);
return 0;
}