#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define F first
#define all(x) x.begin(),x.end()
#define S second
#define sz(x) (int)x.size()
const int MAXN=3e5+10;
typedef pair<int,int> pii;
int n,m,x,y;
void ask(string s){
cout<<"? "<<s<<endl;
cin>>x>>y;
}
void solve(int col){
string s="";
fall(i,0,col-1) s+='>';
fall(i,0,n) s+='v';
ask(s);
if(y!=col) x=-1;
cout<<"! "<<x+1<<" "<<col<<endl;
}
int32_t main(){
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
string s="";
if(m==1){
fall(i,1,n) s+='v';
ask(s);
cout<<"! "<<x+1<<" 0"<<endl;
return 0;
}
if(n==1){
fall(i,1,m) s+='>';
ask(s);
cout<<"! 0 "<<y+1<<endl;
return 0;
}
int mei=(m-1)/2;
s="";
fall(i,0,mei) s+='>';
fall(i,1,n){
fall(j,mei+1,m-2) s+='>';
fall(j,mei+1,m-2) s+='<';
s+='v';
}
ask(s);
if(x!=n-1){
solve(mei+1);
return 0;
}
if(y==0){
s="";
fall(i,1,m) s+='>';
ask(s);
cout<<"! 0 "<<y+1<<endl;
return 0;
}
if(y!=mei+1){
solve(m-(mei+1-y));
return 0;
}
s="";
fall(i,0,mei-1) s+='>';
fall(i,1,n){ //estamos em mei
rfall(j,mei,1) s+='<';
fall(j,1,mei) s+='>';
s+='v';
}
ask(s);
if(x!=n-1){
solve(mei);
return 0;
}
if(y!=mei){
solve(y-mei-1);
return 0;
}
}