#include using namespace std; #ifdef _RUTHEN #include #else #define show(...) true #endif using ll = long long; #define rep(i, n) for (int i = 0; i < (n); i++) template using V = vector; int main() { ios::sync_with_stdio(false); cin.tie(0); int N, M, K; cin >> N >> M >> K; V ans; { V> B(K + 1); int c[2] = {}; rep(i, K + 1) { B[i] = {i % 2, 1}; c[i % 2]++; } if (c[0] <= N and c[1] <= M) { rep(i, K + 1) { if (i % 2 == 0) { B[i].second += N - c[0]; c[0] = N; } } for (int i = K; i >= 0; i--) { if (i % 2 == 1) { B[i].second += M - c[1]; c[1] = M; } } if (c[0] == N and c[1] == M) { string s; for (auto &[c, cnt] : B) s += string(cnt, c + '0'); ans.push_back(s); } } } { V> B(K + 1); int c[2] = {}; rep(i, K + 1) { B[i] = {(i + 1) % 2, 1}; c[(i + 1) % 2]++; } if (c[0] <= N and c[1] <= M) { rep(i, K + 1) { if ((i + 1) % 2 == 0) { B[i].second += N - c[0]; c[0] = N; } } for (int i = K; i >= 0; i--) { if ((i + 1) % 2 == 1) { B[i].second += M - c[1]; c[1] = M; } } if (c[0] == N and c[1] == M) { string s; for (auto &[c, cnt] : B) s += string(cnt, c + '0'); ans.push_back(s); } } } sort(ans.begin(), ans.end()); if (ans.size() == 0) { cout << -1 << '\n'; } else { cout << ans[0] << '\n'; } return 0; }