Problem: You are given three integers a, b, k.

Find two binary integers x and y (x ≥ y) such that 

  1. both x and y consist of a zeroes and b ones; 
  2. x - y (also written in binary form) has exactly k ones. 

You are not allowed to use leading zeros for x and y. 

Input

The only line contains three integers a, b, and k (0 ≤ a; 1 ≤ b; 0 ≤ k ≤ a + b ≤ 2 ⋅ 10^5) — the number of zeroes, ones, and the number of ones in the result.

Output

If it's possible to find two suitable integers, print "Yes" followed by x and y in base-2.

Otherwise print "No".

If there are multiple possible answers, print any of them.

Examples

Input


4 2 3


Output


Yes
101000
100001


Input


3 2 1


Output


Yes
10100
10010


Input


3 2 5


Output


No

Note

In the first example, x = 101000_2 = 2^5 + 2^3 = 40_{10}, y = 100001_2 = 2^5 + 2^0 = 33_{10}, 40_{10} - 33_{10} = 7_{10} = 2^2 + 2^1 + 2^0 = 111_{2}. Hence x-y has 3 ones in base-2.

In the second example, x = 10100_2 = 2^4 + 2^2 = 20_{10}, y = 10010_2 = 2^4 + 2^1 = 18, x - y = 20 - 18 = 2_{10} = 10_{2}. This is precisely one 1.

In the third example, one may show, that it's impossible to find an answer.

Solution (in PYTHON3):

Solution:
import sys

zz=1
 
sys.setrecursionlimit(10**5)
if zz:
	input=sys.stdin.readline
else:	
	sys.stdin=open('input.txt', 'r')
	sys.stdout=open('all.txt','w')
di=[[-1,0],[1,0],[0,1],[0,-1]]

def fori(n):
	return [fi() for i in range(n)]	
def inc(d,c,x=1):
	d[c]=d[c]+x if c in d else x
def ii():
	return input().rstrip()	
def li():
	return [int(xx) for xx in input().split()]
def fli():
	return [float(x) for x in input().split()]	
def dadd(d,p,val):
	if p in d:
		d[p].append(val)
	else:
		d[p]=[val]		
def gi():	
	return [xx for xx in input().split()]
def gtc(tc,ans):
	print("Case #"+str(tc)+":",ans)	
def cil(n,m):
	return n//m+int(n%m>0)	
def fi():
	return int(input())
def pro(a): 
	return reduce(lambda a,b:a*b,a)		
def swap(a,i,j): 
	a[i],a[j]=a[j],a[i]	
def prec(a,pre):
	for i in a:
		pre.append(pre[-1]+i)
	pre.pop(0)	
def si():
	return list(input().rstrip())	
def mi():
	return 	map(int,input().split())			
def gh():
	sys.stdout.flush()
def isvalid(i,j,n,m):
	return 0<=i<n and 0<=j<m 
def bo(i):
	return ord(i)-ord('a')	
def graph(n,m):
	for i in range(m):
		x,y=mi()
		a[x].append(y)
		a[y].append(x)


t=1
uu=t

#11:22

while t>0:
	t-=1
	a,b,k=mi()
	w=k
	if min(a,b)>=2 and k>a+b-2:
		print("No")
	else:
		b-=1
		a1="1"
		a2="1"	
		if min(a,b)==1:
			if k>max(a,b):
				print("No")
				exit(0)
		if min(a,b)==0:
			if k==0:
				print("Yes")
				if a==0:
					print(a1+"1"*b)
					print(a2+"1"*b)
				else:
					print(a1+"0"*a)
					print(a2+"0"*a)
			else:
				print("No")
			exit(0)				

		if k<=a :
			a1+="1"+"0"*k
			a2+="0"*k+"1"
			a1+="0"*(a-k)+"1"*(b-1)
			a2+="0"*(a-k)+"1"*(b-1)
		elif k<=b:
			a1+="1"*k+"0"
			a2+="0"+"1"*k
			a1+="0"*(a-1)+"1"*(b-k)
			a2+="0"*(a-1)+"1"*(b-k)
		else:
			if k==a+b-1:
				a1+="1"*b+"0"*a
				a2+="0"+"1"*(b-1)+"0"*(a-1)+"1"
				print("Yes")
				print(a1)
				print(a2)
				exit(0)
			a1+="1"+"0"*(a-1)
			a2+="0"*(a-1)+"1"
			k-=(a-1)
			a=1
			b-=1
			a1+="1"*min(k,b)+"0"
			a2+="0"+"1"*min(k,b)
			a1+="0"*(a-1)+"1"*(b-k)
			a2+="0"*(a-1)+"1"*(b-k)
				
					
		print("Yes")	
		print(a1)
		print(a2)