#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
const int INF = 0x3f3f3f3f;
const long long LINF = 1000000000000000000 + 5;
long long a00, a01, a11, a10;
long long getPairs(long long x) {
  long long n = (long long)sqrt(x * 2) - 2;
  if (n < 1) n = 1;
  while (n * (n - 1) / 2 < x) n++;
  if (n * (n - 1) / 2 == x)
    return n;
  else
    return -1;
}
int main(void) {
  cin >> a00 >> a01 >> a10 >> a11;
  long long s = a00 + a01 + a10 + a11;
  if (s == 0) {
    puts("0");
    return 0;
  }
  long long n = getPairs(s);
  if (n == -1) {
    puts("Impossible");
    return 0;
  }
  if (a00 == 0 && a01 == 0 && a10 == 0) {
    for (int i = 0; i < (n); i++) printf("1");
    puts("");
    return 0;
  }
  if (a11 == 0 && a01 == 0 && a10 == 0) {
    for (int i = 0; i < (n); i++) printf("0");
    puts("");
    return 0;
  }
  long long z = getPairs(a00);
  long long on = getPairs(a11);
  if (z == -1 || on == -1 || z + on != n) {
    puts("Impossible");
    return 0;
  }
  for (int i = 0; i < (n); i++) {
    if (z > 0 && a01 >= on) {
      a01 -= on;
      z--;
      printf("0");
    } else if (on > 0 && a10 >= z) {
      a10 -= z;
      on--;
      printf("1");
    } else
      throw;
  }
  puts("\n");
  return 0;
}
