#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; const ll MOD=1e9+7; ll powmod(ll a, ll k){ ll ap=a, ans=1; while(k){ if(k&1){ ans*=ap; ans%=MOD; } ap=ap*ap; ap%=MOD; k>>=1; } return ans; } ll inv(ll a){ return powmod(a, MOD-2); } int sa[200020], sb[200020]; ll cnta[1<<10], cntb[1<<10]; ll cnt1[1<<10], cnt2[1<<10]; int main() { int n, m, k; cin>>n>>m>>k; for(int i=0; i>a; sa[i+1]=(sa[i]^a); } for(int i=0; i>b; sb[i+1]=(sb[i]^b); } for(int i=0; i<=n; i++){ cnta[sa[i]]++; } for(int i=0; i<=m; i++){ cntb[sb[i]]++; } for(int i=0; i<1024; i++){ for(int j=0; j<1024; j++){ cnt1[i^j]+=cnta[i]*cnta[j]; } } cnt1[0]-=n; for(int i=0; i<1024; i++){ cnt1[i]=cnt1[i]/2%MOD; } for(int i=0; i<1024; i++){ for(int j=0; j<1024; j++){ cnt2[i^j]+=cntb[i]*cntb[j]; } } cnt2[0]-=m; for(int i=0; i<1024; i++){ cnt2[i]=cnt2[i]/2%MOD; } ll ans=0; for(int i=0; i<1024; i++){ (ans+=cnt1[i]*cnt2[i^k])%=MOD; } cout<