#include <bits/stdc++.h>
using namespace std;
const double g = 10.0, eps = 1e-7;
const int N = 100000 + 10, maxn = 1000000 + 10, inf = 0x3f3f3f;
map<long long, long long> ans;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  for (long long i = 1; i <= 1e5; i++) ans[i * (i - 1) / 2] = i;
  long long a, b, c, d;
  cin >> a >> b >> c >> d;
  if (a == 0 && b == 0 && c == 0 && d == 0) {
    cout << "0" << endl;
    return 0;
  }
  long long aa = ans[a], dd = ans[d];
  if (ans[a] == 0 || ans[d] == 0) {
    cout << "Impossible" << endl;
    return 0;
  }
  if (b == 0 && c == 0) {
    if (a == 0 && d != 0)
      cout << string(dd, '1') << endl;
    else if (a != 0 && d == 0)
      cout << string(aa, '0') << endl;
    else if (a != 0 && d != 0)
      cout << "Impossible" << endl;
    return 0;
  }
  if (aa * dd != c + b) {
    cout << "Impossible" << endl;
    return 0;
  }
  string s = string(dd, '1');
  int p = b / dd;
  b -= p * dd;
  s = string(p, '0') + s;
  p = c / dd;
  c -= p * dd;
  s = s + string(p, '0');
  if (c == 0 && b == 0) {
    cout << s << endl;
    return 0;
  }
  int one = 0;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '1') one++;
    if (one == c) {
      s = s.substr(0, i + 1) + '0' + s.substr(i + 1, s.size());
      break;
    }
  }
  cout << s << endl;
  return 0;
}
