#include <bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); i++)
#define R(i, j, k) for(int i = (j); i >= (k); i--)
#define all(x) x.begin(), x.end()
#define sz(a) ((int) a.size())
#define pb emplace_back
#define fst first
#define snd second
using namespace std;
typedef long long ll;
const int INF=1e9,MAXN=1e5+5;
void chmin(int &a,int b){a=min(a,b);}
struct Node{
int mn,mx,lz;
};
int n;
Node st[MAXN*4];
Node op(Node &a,Node &b){
Node c;
c.mn=min(a.mn,b.mn);
c.mx=max(a.mx,b.mx);
return c;
}
void pass(int v){
st[v*2].mx+=st[v].lz;
st[v*2].mn+=st[v].lz;
st[v*2+1].mx+=st[v].lz;
st[v*2+1].mn+=st[v].lz;
st[v].lz=0;
}
void upd(int ts,int te,int x,int v=1,int s=0,int e=n-1){
if(e<ts||s>te)return;
if(ts<=s&&e<=te){
st[v].mn+=x;
st[v].mx+=x;
st[v].lz+=x;
return;
}else{
pass(v);
int m=(s+e)/2;
upd(ts,te,x,v*2,s,m);
upd(ts,te,x,v*2+1,m+1,e);
st[v]=op(st[v*2],st[v*2+1]);
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n;
L(i,0,n-1){
int r,s;cin>>r>>s;
s--;
int x=s?-1:1;
upd(0,r-1,x);
if(st[1].mn>=0){
cout<<">"<<endl;
}else if(st[1].mx<=0){
cout<<"<"<<endl;
}else cout<<"?"<<endl;
}
}