#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const int stala = 1e6;
long long a, b, c, d;
long long il_ones = 0, il_zeros = 0;
string res = "";
int main() {
  ios::sync_with_stdio(0);
  cin >> a >> b >> c >> d;
  il_zeros = a > 0 || b > 0 || c > 0;
  for (int i = 1; a > 0; i++, il_zeros++) a -= i;
  il_ones = d > 0 || b > 0 || c > 0;
  for (int i = 1; d > 0; i++, il_ones++) d -= i;
  if (a < 0 || d < 0)
    cout << "Impossible\n";
  else {
    b -= il_zeros * il_ones;
    vector<int> moves;
    while (c > 0 && moves.size() < il_zeros && il_ones) {
      int tmp = min(c, il_ones);
      c -= tmp;
      b += tmp;
      moves.push_back(tmp);
    }
    if (a == 0 && b == 0 && c == 0 && d == 0) {
      int i;
      for (i = 0; i < il_zeros - int(moves.size()); i++) cout << "0";
      int _1 = 0;
      while (moves.size()) {
        while (_1 < moves.back()) {
          _1++;
          cout << "1";
        }
        cout << "0";
        moves.pop_back();
      }
      if (!il_zeros && !il_ones) il_ones = 1;
      for (int i = _1; i < il_ones; i++) cout << "1";
      cout << "\n";
    } else
      cout << "Impossible\n";
  }
  return 0;
}
