#include <bits/stdc++.h>
using namespace std;
long long int sol(long long int x) {
  for (int i = 0; i <= 100000; i++) {
    if (((i * 1ll * (i - 1)) / 2) == x) return i;
  }
  return -1;
}
int main(int argc, char const *argv[]) {
  long long int a, b, c, d;
  cin >> a >> b >> c >> d;
  long long int z = sol(a);
  long long int o = sol(d);
  if (z == 0 && (b != 0 || c != 0)) z = 1;
  if (o == 0 && (b != 0 || c != 0)) o = 1;
  if (z == -1 || o == -1) {
    puts("Impossible");
    return 0;
  }
  if ((a + b + c + d) == 0) {
    cout << "1";
    return 0;
  } else if (a != 0 && (b + c + d) == 0) {
    for (int i = 1; i <= z; i++) cout << "0";
    return 0;
  } else if ((a + b + c) == 0 && d != 0) {
    for (int i = 1; i <= o; i++) cout << "1";
    return 0;
  } else if ((b + c) != (o * z)) {
    puts("Impossible");
    return 0;
  }
  long long int zf = b / o;
  long long int zl = b % o;
  long long int of = o - zl;
  int zif = (int)(zf);
  int zil = (int)(zl);
  int oif = (int)(of);
  string ans = "";
  for (int i = 1; i <= zif; i++) ans += "0";
  for (int i = 1; i <= of; i++) ans += "1";
  if (zil) ans += "0";
  z -= zif + (zil != 0);
  o -= of;
  for (int i = 1; i <= o; i++) ans += "1";
  for (int i = 1; i <= z; i++) ans += "0";
  cout << ans;
  return 0;
}
