#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<map>
#include<stack>
#include<queue>
using namespace std;
typedef long long ll;
map<char,ll>list;
const ll INF=0x3fffffff;
const ll mo=10440647;
void deal(string& s)
{
string s1;
for(ll i=0;i<s.length();i++)
{
if(s[i]==' ')continue;
s1+=s[i];
}
s=s1;
return;
}
stack<char>sign;
stack<string>stk[30];
ll toint(string s)
{
ll num=0;
for(int i=0;i<s.length();i++)
{
num=(num*10+s[i]-'0')%mo;
}
return num;
}
void change(string s,ll index)
{
stack<string>s2;
for(int i=0;i<s.length();i++)
{
if(s[i]=='a')
{
string k;
k+=s[i];
s2.push(k);
}
else if(s[i]>='0'&&s[i]<='9')
{
ll j;
string s1;
for(j=i;s[j]<='9'&&s[j]>='0';j++)
{
s1+=s[j];
}
i=j-1;
s2.push(s1);
}
else
{
if(s[i]==')')
{
while(sign.top()!='(')
{
string k;
k+=sign.top();
s2.push(k);
sign.pop();
}
sign.pop();
}
else
{
while(!sign.empty()&&list[s[i]]<=list[sign.top()]&&sign.top()!='(')
{
string k;
k+=sign.top();
s2.push(k);
sign.pop();
}
sign.push(s[i]);
}
}
}
while(!sign.empty())
{
string k;
k+=sign.top();
s2.push(k);
sign.pop();
}
while(!s2.empty())
{
stk[index].push(s2.top());
s2.pop();
}
return;
}
void init()
{
list['+']=0;
list['-']=0;
list['*']=1;
list['/']=1;
list['^']=2;
list['(']=INF;
return;
}
ll p(ll a,ll b)
{
ll num=1;
for(int i=1;i<=b;i++)
{
num=(num*a)%mo;
}
return num;
}
ll get(ll index,ll value)
{
stack<ll>st;
stack<string>q;
while(!stk[index].empty())
{
string s=stk[index].top();
q.push(stk[index].top());
stk[index].pop();
if(s[0]>='0'&&s[0]<='9')
{
st.push(toint(s));
}
else if(s[0]=='a')
{
st.push(value);
}
else
{
ll num2=st.top();
st.pop();
ll num1=st.top();
st.pop();
if(s[0]=='+')
{
st.push((num1+num2)%mo);
}
else if(s[0]=='-')
{
st.push((num1-num2)%mo);
}
else if(s[0]=='*')
{
st.push((num1*num2)%mo);
}
else
{
st.push(p(num1,num2));
}
}
}
while(!q.empty())
{
stk[index].push(q.top());
q.pop();
}
return st.top()%mo;
}
string arr[30];
ll book[30];
int main()
{
init();
string s;
getline(cin,s);
deal(s);
change(s,0);
ll n;
cin>>n;
for(int i=0;i<n;i++)
{
getline(cin,arr[i]);
deal(arr[i]);
change(arr[i],i);
}
getline(cin,arr[n]);
deal(arr[n]);
change(arr[n],n);
for(int i=1;i<=500;i++)
{
ll value=get(0,i);
for(int j=1;j<=n;j++)
{
ll v1=get(j,i);
if(v1!=value)book[j]=true;
}
}
for(int i=1;i<=n;i++)
{
if(!book[i])
{
char letter='A'+i-1;
cout<<letter;
}
}
return 0;
}
本地可过提交全RE