提交记录
#include<bits/stdc++.h>
#define arrout(a,n) rep(i,1,n)std::cout<<a[i]<<" "
#define arrin(a,n) rep(i,1,n)std::cin>>a[i]
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dep(i,x,n) for(int i=x;i>=n;i--)
#define erg(i,x) for(int i=head[x];i;i=e[i].nex)
#define dbg(x) std::cout<<#x<<":"<<x<<" "
#define mem(a,x) memset(a,x,sizeof a)
#define all(x) x.begin(),x.end()
#define arrall(a,n) a+1,a+1+n
#define PII std::pair<int,int>
#define m_p std::make_pair
#define u_b upper_bound
#define l_b lower_bound
#define p_b push_back
#define CD const double
#define CI const int
#define int long long
#define il inline
#define ss second
#define ff first
#define itn int
CI N=1e5+5;
int a,b,A,B,C;
std::bitset<100> x,y,c;
signed main() {
std::cin>>a>>b>>C;
c=C;
if((a+b+c.count())%2!=0||a+b+c.count()>120||a>b+c.count()||b>c.count()+a||c.count()>a+b) {
puts("-1");
exit(0);
}
rep(i,1,a) {
bool flag=0;
rep(j,1,b) {
if(i+j==c.count()&&a-i==b-j) {
A=i;
B=j;
flag=1;
break;
}
}
if(flag) {
break;
}
}
a-=A;
b-=B;
rep(i,0,59) {
if(c[i]==0) {
if(a>0&&b>0) {
a--;
b--;
x[i]=1;
y[i]=1;
}
} else {
if(A>0) {
A--;
x[i]=1;
} else if(B>0) {
B--;
y[i]=1;
} else {
puts("-1");
exit(0);
}
}
}
std::cout<<x.to_ullong()<<" "<<y.to_ullong();
return 0;
}