#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int M = 1e5 + 1;
pair<int,int> seg[M*2];
int lz[M*2];
void push(int v,int lc,int rc)
{
seg[lc].first+=lz[v], seg[lc].second+=lz[v], lz[lc]+=lz[v];
seg[rc].first+=lz[v], seg[rc].second+=lz[v], lz[rc]+=lz[v];
lz[v]=0;
}
void modify(int l,int r,int x,int v=0,int s=1,int e=M)
{
if (s>=r or e<=l) return;
if (l<=s && e<=r)
{
seg[v].first+=x, seg[v].second+=x;
lz[v]+=x;
return;
}
int mid=(s+e)/2, lc=v+1, rc=v+(mid-s)*2;
push(v,lc,rc);
modify(l,r,x,lc,s,mid);
modify(l,r,x,rc,mid,e);
seg[v].first=max(seg[lc].first,seg[rc].first);
seg[v].second=min(seg[lc].second,seg[rc].second);
}
void solve()
{
int n;
cin>>n;
int cnt[2]={};
for (int i=0;i<M*2;i++) seg[i].first=seg[i].second=0;
for (int i=0;i<n;i++)
{
int x,s;
cin>>x>>s;s--;
modify(1,x+1,s*2-1), cnt[s]++;
char ans='?';
string o="<>";
for (int j=0;j<2;j++)
{
if (cnt[j]>cnt[1-j]) continue;
if (!j && seg[0].second>=0)
ans=o[0];
if (j && seg[0].first<=0)
ans=o[1];
}
cout<<ans<<endl;
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL), cout.tie(NULL);
int t=1;
// cin>>t;
while (t--)
solve();
return 0;
}