#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,p,n,tot,t,ans;
string s;
stack<int> sk;
struct tree{
int l,r,fg,x;
}a[1000005];
void dfs(int x){
if(a[x].fg==1){
if(t>a[x].x) dfs(a[x].l);
else dfs(a[x].r);
}
if(a[x].fg==-1){
if(t<a[x].x) dfs(a[x].l);
else dfs(a[x].r);
}
if(!a[x].fg){
ans=a[x].x;
return;
}
}
signed main(){
cin>>m>>p>>s,n=s.size();
for(int i=1;i<n;i++){
if(s[i]=='<') a[++tot].fg=-1;
if(s[i]=='>') a[++tot].fg=1;
if(s[i]<='9'&&s[i]>='0'){
if(s[i-1]=='<'||s[i-1]=='>'||(s[i-1]<='9'&&s[i-1]>='0')) a[tot]={-1,-1,a[tot].fg,a[tot].x*10+s[i]-48};
else a[++tot]={-1,-1,a[tot].fg,a[tot].x*10+s[i]-48};
}
if(s[i]=='?') a[tot].l=tot+1,sk.push(tot);
if(s[i]==':'){
a[sk.top()].r=tot+1,sk.pop();
}
}
while(p--){
cin>>t,ans=0;
dfs(1),cout<<ans<<'\n';
}
return 0;
}