#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m, k; cin >> n >> m >> k; if (k == 0) { if (n > 0 && m > 0) { cout << -1 << '\n'; } else if (n > 0) { cout << string(n, '0') << '\n'; } else { cout << string(m, '1') << '\n'; } return 0; } vector can; { if (k & 1) { if (n >= (k + 1) / 2 && m >= (k + 1) / 2) { string x = string(n - (k + 1) / 2, '0'); for (int i = 0; i < (k + 1) / 2; i++) { x += '0'; x += '1'; } x += string(m - (k + 1) / 2, '1'); can.push_back(x); } } else { if (n >= k / 2 + 1 && m >= k / 2) { string x = string(n - k / 2 - 1, '0'); for (int i = 0; i < k / 2; i++) { x += '0'; x += '1'; } x += string(m - k / 2, '1'); x += '0'; can.push_back(x); } } } { if (k & 1) { if (n >= (k + 1) / 2 && m >= (k + 1) / 2) { string x = ""; if (k == 1) { x = string(m, '1') + string(n, '0'); } else { x = "1"; x += string(n - (k + 1) / 2 + 1, '0'); for (int i = 0; i < (k + 1) / 2 - 2; i++) { x += "10"; } x += string(m - (k + 1) / 2 + 1, '1'); x += '0'; } can.push_back(x); } } else { if (n >= k / 2 && m >= k / 2 + 1) { string x = "1"; x += string(n - k / 2 + 1, '0'); for (int i = 0; i < k / 2 - 1; i++) { x += "10"; } x += string(m - k / 2, '1'); can.push_back(x); } } } sort(can.begin(), can.end()); cout << (can.size() ? can[0] : "-1") << '\n'; }