#include<bits/stdc++.h>
using namespace std;
#define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m
#define ll long long
//#define int long long
#define all(x,off) x.begin()+off,x.end()
#define pb push_back
const int N=5e5+10;
const ll inf=9e17;
const ll mod=1e9+7;
int a[N];
vector<array<int,2>> v;
vector<array<int,2>> g[N];
void dfs(int u,int d=1) {
v.push_back({d,u});
a[u]=1;
for (auto [v,w]:g[u]) {
if (a[v]) continue;
dfs(v,d+w);
}
}
void levi() {
int n,m,q;
cin>>n>>m>>q;
vector<int> ans(m+1,-1);
for (int i=1;i<=q;++i) {
int a,b;
char c;
cin>>a>>c>>b;
if (c=='<') g[a].pb({b,1}),g[b].pb({a,-1});
else g[a].pb({b,0}),g[b].pb({a,0});
}
for (int i=1;i<=m;++i) {
if (!a[i]) {
v.clear();
dfs(i);
sort(begin(v),end(v));
if (v.back()[0]-v.front()[0]!=n-1) continue;
for (auto [d,u]:v) {
ans[u]=d+1-v.front()[0];
}
}
}
for (int i=1;i<=m;++i) {
if (ans[i]==-1) {
cout<<"?\n";
continue;
}
cout<<"K"<<ans[i]<<'\n';
}
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);int tt=1;//cin>>tt;
while (tt--) levi();
}