#include <bits/stdc++.h>
using namespace std;
long long test(long long a) {
  long long x = (long long)sqrt(1 + 8 * a);
  if (x * x != 1 + 8 * a) return -1;
  return (1 + x) / 2;
}
int main() {
  long long a, b, c, d;
  scanf("%lld %lld %lld %lld", &a, &b, &c, &d);
  long long z = test(a);
  long long u = test(d);
  if (z < 0 || u < 0) {
    cout << "Impossible";
    return 0;
  }
  if (d && a == 0 && b == 0 && c == 0) z = 0;
  if (a && b == 0 && c == 0 && d == 0) u = 0;
  if (a + b + c + d == 0) {
    printf("0");
    return 0;
  }
  string s;
  for (int i = 0; i < z; i++) {
    s += '0';
  }
  for (int i = 0; i < u; i++) {
    s += '1';
  }
  long long q01 = u * z;
  long long q10 = 0;
  int i = 0, j = z;
  while (j < s.size() && q01 - b > z && s[i] == '0' && s[j] == '1') {
    swap(s[i], s[j]);
    i++, j++;
    q01 -= z;
    q10 += z;
  }
  while (j < s.size() && j > 0 && s[j - 1] == '0' && q01 > b) {
    q01--;
    q10++;
    swap(s[j], s[j - 1]);
    j--;
  }
  if (q01 != b || q10 != c) {
    cout << "Impossible";
    return 0;
  }
  printf("%s\n", s.c_str());
  return 0;
}
