#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long sign = 1;
  long long x = 0;
  char ch;
  while (!isdigit(ch = getchar()))
    if (ch == '-') sign = -1;
  while (isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
  return x * sign;
}
inline void write(long long k) {
  if (k < 0) putchar('-'), k *= -1;
  char ch[20];
  int num = 0;
  while (k) ch[++num] = k % 10, k /= 10;
  if (num == 0) ch[++num] = 0;
  while (num) putchar(ch[num--] + '0');
}
long long a, b, c, d, n1, n2, aa, bb;
int main() {
  a = read();
  b = read();
  c = read();
  d = read();
  if (a == 0 && b == 0 && c == 0 && d == 0) {
    printf("0");
    return 0;
  }
  for (n1 = 0; n1 * (n1 - 1) < a * 2; n1++)
    ;
  for (n2 = 0; n2 * (n2 - 1) < d * 2; n2++)
    ;
  if (b + c > 0 && n1 == 0) n1 = 1;
  if (b + c > 0 && n2 == 0) n2 = 1;
  if (n1 * (n1 - 1) != a * 2 || n2 * (n2 - 1) != d * 2 || n1 * n2 != b + c) {
    printf("Impossible");
    return 0;
  }
  if (n1 == 0) {
    aa = b;
    bb = 0;
  } else {
    aa = b / n1;
    bb = b % n1;
  }
  if (bb == 0) bb = -1, n2++;
  for (register long long i = (0); i < (n2 - aa - 1); i++) putchar('1');
  for (register long long i = (0); i < (n1); i++) {
    if (i == bb) putchar('1');
    putchar('0');
  }
  for (register long long i = (0); i < (aa); i++) putchar('1');
  return 0;
}
