#include<bits/stdc++.h>
#define fo(i,a,b)for(int i=a,_e=b;i<=_e;++i)
#define fd(i,a,b)for(int i=b,_e=a;i>=_e;--i)
#define put putchar
#define pb push_back
#define pop pop_back
using namespace std;
const int N=2e6+5;
int n,m,k,nn,kk;
struct nod{
	int x,y,len;
	nod(int u=0,int v=0,int le=0){x=u;y=v;len=le;}
}ad;
vector<nod>a,d;
char c[2][N];
void add(nod ad){
	if(!ad.x&&!ad.y&&a.size()&&!a.back().x&&!a.back().y)a[a.size()-1].len+=ad.len;else a.pb(ad);
}
int main(){
	scanf("%d%d%d\n%s\n%s",&n,&m,&k,c[0]+1,c[1]+1);
	reverse(c[0]+1,c[0]+n+1);
	reverse(c[1]+1,c[1]+m+1);
	nn=max(n,m);
	fo(i,n+1,nn)c[0][i]='0';
	fo(i,m+1,nn)c[1][i]='0';
	fd(i,1,nn){
		ad=nod(c[0][i]-'0',c[1][i]-'0',1);
		if(ad.x&&ad.y){
			for(kk=k;a.size();){
				if(ad.x&&ad.y){
					if(!a.back().x&&!a.back().y){
						if(kk<=a.back().len){
							if(kk)d.pb(nod(0,0,kk));
							d.pb(nod(1,1,1));
							if(kk<a.back().len)d.pb(nod(0,0,a.back().len-kk));
							a.pop();
							ad=nod(0,0,0);
							break;
						}
						kk-=a.back().len;
						d.pb(a.back());a.pop();
						continue;
					}
					if(!kk){
						d.pb(nod(1,1,1));
						ad=nod(0,0,0);
						break;
					}
					--kk;
					int o=a.back().x;
					d.pb(nod(0,0,1));
					d.pb(o?nod(0,1,1):nod(1,0,1));
					a.pop();
					ad=o?nod(1,0,0):nod(0,1,0);
					continue;
				}
				if(ad.x){
					if(!a.back().x&&!a.back().y){
						d.pb(nod(1,0,1));
						if(a.back().len>1)d.pb(nod(0,0,a.back().len-1));
						a.pop();
						ad=nod(0,0,0);
						break;
					}
					if(a.back().x){
						d.pb(nod(0,0,1));
						a.pop();
						continue;
					}
					//a.back().y
					ad=nod(1,1,0);
					a.pop();
					continue;
				}
				//ad.y
				if(!a.back().x&&!a.back().y){
					d.pb(nod(0,1,1));
					if(a.back().len>1)d.pb(nod(0,0,a.back().len-1));
					a.pop();
					ad=nod(0,0,0);
					break;
				}
				if(a.back().y){
					d.pb(nod(0,0,1));
					a.pop();
					continue;
				}
				//a.back().x
				ad=nod(1,1,0);
				a.pop();
			}
			if(!a.size()){
				if(ad.x&&ad.y){
					if(kk)d.pb(nod(0,0,kk));
					d.pb(nod(1,1,1));
				}else{
					if(ad.x)d.pb(nod(1,0,1));
					if(ad.y)d.pb(nod(0,1,1));
				}
			}
		}else add(ad);
		fd(j,0,d.size()-1)add(d[j]);
		d.clear();
	}
	bool is=0;
	fo(i,0,a.size()-1)
		fo(j,1,a[i].len)
			if(a[i].x)is=1,put('1');
			else (is?put('0'):0);
	put('\n');
	is=0;
	fo(i,0,a.size()-1)
		fo(j,1,a[i].len)
			if(a[i].y)is=1,put('1');
			else (is?put('0'):0);
}