#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
#define int long long
const int M = 1e5 + 1;
int pre[M+1], n, mod;
vector<int> ind[M];
string s;
pair<int,int> mul(pair<int,int> a, pair<int,int> b)
{
pair<int,int> ans;
ans.first=a.first*b.second+a.second*b.first, ans.second=a.second*b.second;
return ans;
}
pair<int,int> solve(int l,int r)
{
vector<pair<int,int>> ad;
pair<int,int> cur={0,1};
pair<int,int> ans={0,0};
for (int i=l;i<r;i++)
{
if (s[i]=='+')
ans.first+=cur.first, ans.second+=cur.second, cur={0,1};
else if(s[i]=='(')
{
int x=upper_bound(all(ind[pre[i]]), i)-begin(ind[pre[i]]);
cur=mul(cur,solve(i+1,ind[pre[i]][x]-1));
i=ind[pre[i]][x]-1;
}
else if(s[i]=='x')
cur=mul(cur,{1,0});
else if('0'<=s[i] && s[i]<='9')
{
int val=0;
for (;i<r;i++)
{
if (s[i]<'0' or s[i]>'9') break;
val=val*10+(s[i]-'0');
}
i--;
cur=mul(cur,{0,val});
}
cur.first%=mod, cur.second%=mod, ans.first%=mod, ans.second%=mod;
}
ans.first+=cur.first, ans.second+=cur.second;
ans.first%=mod, ans.second%=mod;
return ans;
}
signed main()
{
cin>>s;
n=s.size();
int p;
cin>>p>>mod;
ind[0].push_back(0);
for (int i=0;i<n;i++)
{
pre[i+1]=pre[i];
if (s[i]=='(') pre[i+1]++;
if (s[i]==')') pre[i+1]--;
ind[pre[i+1]].push_back(i+1);
}
pair<int,int> ex=solve(0,n);
for (int i=0;i<mod;i++)
if ((ex.first*i+ex.second)%mod==p)
{
cout<<i<<endl;
break;
}
return 0;
}