inline void solve(){
n=read(),m=read();int k=read();int u=n,v=m,w=k;
if(n+m<__builtin_popcountll(k)) return puts("-1"),void();
if((n+m&1)^(k&1)) return puts("-1"),void();
int now=n+m,A=0,B=0,r=1,cnt=0;
while(now){
if(k&1){
--now;
if(!n&&!m) return puts("-1"),void();
if(n>m) --n,A|=r;
else --m,B|=r;
}
else{
if(now>__builtin_popcountll(k)&&n&&m){
now-=2;n--,m--;
A|=r,B|=r;
}
}
++cnt;
if(cnt>60) return puts("-1"),void();
k>>=1;
r<<=1;
}
//cout<<(A^B)<<endl;
if((__builtin_popcountll(A)!=u||__builtin_popcountll(B)!=v)||((A^B)!=w)) return puts("-1"),void();
writes(A);
writed(B);
return;
}