#include <bits/stdc++.h>
using namespace std;
long long a[1000000 + 100], f2, x1, x2, b[1000000 + 100], razl, sol, pok1, pok2;
double f1;
int main() {
  for (int i = 1; i <= 4; i++) cin >> a[i];
  f1 = sqrt(1 + 8 * a[1]) * 1.0;
  f2 = sqrt(1 + 8 * a[1]);
  if (f1 != f2) {
    printf("Impossible\n");
    return 0;
  }
  f1 = sqrt(1 + 8 * a[4]) * 1.0;
  f2 = sqrt(1 + 8 * a[4]);
  if (f1 != f2) {
    printf("Impossible\n");
    return 0;
  }
  x1 = 1 + sqrt(1 + 8 * a[1]);
  x1 /= 2;
  x2 = 1 + sqrt(1 + 8 * a[4]);
  x2 /= 2;
  if (a[1] == 0 && a[2] == 0 && a[3] == 0) x1 = 0;
  if (a[4] == 0 && a[2] == 0 && a[3] == 0) x2 = 0;
  if (a[2] + a[3] != x1 * x2) {
    printf("Impossible\n");
    return 0;
  }
  for (int i = 1; i <= x1; i++) b[i] = 0;
  for (int i = x1 + 1; i <= x1 + x2; i++) b[i] = 1;
  sol = x1 * x2;
  pok1 = x1;
  pok2 = x1 + x2;
  while (sol != a[2]) {
    if (sol - x2 > a[2])
      swap(b[pok1], b[pok2]), pok1--, pok2--, sol -= x2;
    else {
      swap(b[pok1], b[pok1 + sol - a[2]]);
      break;
    }
  }
  if (x1 + x2 == 0) printf("0");
  for (int i = 1; i <= x1 + x2; i++) cout << b[i];
  printf("\n");
  return 0;
}
