#include <bits/stdc++.h>
using namespace std;
int const N=1e5+10;
struct node
{
int mn=0,mx=0,lazy=0;
};
node seg[4*N]={};
node merge(node a,node b)
{
node c;
c.mn=min(a.mn,b.mn);
c.mx=max(a.mx,b.mx);
return c;
}
void push(int i)
{
for (int j=2*i;j<=2*i+1;j++)
{
seg[j].mn+=seg[i].lazy;
seg[j].mx+=seg[i].lazy;
seg[j].lazy+=seg[i].lazy;
}
seg[i].lazy=0;
}
node dm;
void upd(int i,int st,int en,int l,int r,int vl)
{
if (st>=l&&en<=r)
{
seg[i].mn+=vl;
seg[i].mx+=vl;
seg[i].lazy+=vl;
return;
}
if (st>r||en<l)
return;
int mid=(st+en)/2;
push(i);
upd(i*2,st,mid,l,r,vl);
upd(i*2+1,mid+1,en,l,r,vl);
seg[i]=merge(seg[i*2],seg[i*2+1]);
}
inline void solve()
{
int n;
cin>>n;
for (int i=0;i<n;i++)
{
int r,s;
cin>>r>>s;
r--;
if (s==2)
s=-1;
upd(1,0,n-1,0,r,s);
if (seg[1].mn>=0)
cout<<">\n";
else if (seg[1].mx<=0)
cout<<"<\n";
else
cout<<"?\n";
}
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
// cin>>t;
for (int i=1;i<=t;i++)
{
solve();
}
}