#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(c) (c).begin(), (c).end()
#define F first
#define S second
int last_true(int lo, int hi, function<bool(int)>ok){
lo--;
while(lo<hi){
int mid = lo + (hi-lo+1)/2;
if (ok(mid)) lo = mid;
else hi = mid-1;
}
return lo;
}
int first_true(int lo, int hi, function<bool(int)>ok){
hi++;
while(lo<hi){
int mid = lo + (hi-lo)/2;
if (ok(mid)) hi = mid;
else lo = mid+1;
}
return lo;
}
const int mxN = 100;
int grid[mxN][mxN];
bool self = false;
bool examine(int x, int y){
if (self) return grid[x][y];
cout << "examine " << x << " " << y << endl;
fflush(stdout);
string res; cin>>res;
return res == "true";
}
void fetch(int n){
for (int i=1;i<=n;i++) {
string s; cin>>s;
for (int j=1;j<=n;j++) {
grid[i][j] = s[j-1] == '*';
}
}
}
void solve(){
int n,x,y; cin>>n>>x>>y;
if (self) fetch(n);
int ax=x, ay=y, bx=x, by=y;
while(ax > 1 && examine(ax-1, ay)) ax--;
while(ay > 1 && examine(ax, ay-1)) ay--;
while(bx < n && examine(bx+1, by)) bx++;
while(by < n && examine(bx, by+1)) by++;
int M = bx-ax+1;
int cx = (ax+bx)/2, cy = (ay+by)/2;
// cout << ax << " " << ay << endl;
// cout << bx << " " << by << endl;
while(cx - M >= 1 && cy - M >= 1 && examine(cx-M, cy-M)) cx-=M, cy-=M;
while(cx - 2*M >= 1 && examine(cx-2*M, cy)) cx-=2*M;
while(cy - 2*M >= 1 && examine(cx, cy-2*M)) cy-=2*M;
cout << "solution " << cx+2*M << " " << cy+2*M << endl;
fflush(stdout);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
solve();
}