N, M, K = gets.split.map(&:to_i) def f(n, m, k) zero_stack = [] one_stack = [] (k + 1).times do |i| if i.even? zero_stack << 1 else one_stack << 1 end end if zero_stack.size > n return false end if one_stack.size > m return false end zero_stack[0] += n - zero_stack.size if zero_stack.size > 0 one_stack[-1] += m - one_stack.size if one_stack.size > 0 res = '' i = 0 while zero_stack.size > 0 || one_stack.size > 0 if i.even? res << '0' * zero_stack.shift else res << '1' * one_stack.shift end i += 1 end res end def g(n, m, k) zero_stack = [] one_stack = [] (k + 1).times do |i| if i.even? one_stack << 1 else zero_stack << 1 end end if zero_stack.size > n return false end if one_stack.size > m return false end zero_stack[0] += n - zero_stack.size if zero_stack.size > 0 one_stack[-1] += m - one_stack.size if one_stack.size > 0 res = '' i = 0 while zero_stack.size > 0 || one_stack.size > 0 if i.even? res << '1' * one_stack.shift else res << '0' * zero_stack.shift end i += 1 end res end res1 = f(N, M, K) res2 = g(N, M, K) ans = [] ans << res1 if res1 ans << res2 if res2 if ans.empty? puts -1 else puts ans.sort.first end