#include <bits/stdc++.h>
using namespace std;
long long n, m, a[1000100];
int main() {
  long long r, k, i, c = 0, x = 0, y = 0, j, t, l, z, x1 = 0, y1 = 0, a00, a01,
                     a10, a11;
  long long ans = 0;
  string p;
  cin >> a00 >> a01 >> a10 >> a11;
  x = 1 + 8 * a00;
  y = sqrt(x);
  if (y * y != x || y % 2 == 0) {
    c = 1;
  }
  x = 1 + 8 * a11;
  z = sqrt(x);
  if (z * z != x || z % 2 == 0) {
    c = 1;
  }
  if (!c) {
    y++;
    y /= 2;
    z++;
    z /= 2;
    if (y == 1 && z == 1) {
      if (a01 + a10 > 1)
        c = 1;
      else if (a01)
        cout << "01" << endl;
      else if (a10)
        cout << "10" << endl;
      else
        cout << "0" << endl;
    } else if (y == 1) {
      if (a01 + a10 > y * z)
        c = 1;
      else if (a01 + a10 == y * z) {
        for (i = 0; i < a10; i++) cout << 1;
        cout << 0;
        for (i = 0; i < a01; i++) cout << 1;
      } else if (a01 + a10 == 0)
        for (i = 0; i < z; i++) cout << 1;
    } else if (z == 1) {
      if (a01 + a10 > y * z)
        c = 1;
      else if (a01 + a10 == y * z) {
        for (i = 0; i < a01; i++) cout << 0;
        cout << 1;
        for (i = 0; i < a10; i++) cout << 0;
      } else if (a01 + a10 == 0)
        for (i = 0; i < y; i++) cout << 0;
    } else {
      if (a10 + a01 != y * z)
        c = 1;
      else {
        x = a10 / z;
        if (a10 % z) {
          for (i = 0; i < y - x - 1; i++) cout << 0;
          for (i = 0; i < a10 % z; i++) cout << 1;
          cout << 0;
          for (i = 0; i < z - a10 % z; i++) cout << 1;
          for (i = 0; i < x; i++) cout << 0;
        } else {
          for (i = 0; i < y - x; i++) cout << 0;
          for (i = 0; i < z; i++) cout << 1;
          for (i = 0; i < x; i++) cout << 0;
        }
      }
    }
  }
  if (c) cout << "Impossible";
  return 0;
}
