#include <bits/stdc++.h>
using namespace std;
long long a00, a01, a10, a11;
string f = "Impossible";
int main() {
  cin >> (a00) >> (a01) >> (a10) >> (a11);
  long long q1 = 0, q0 = 0;
  while ((q1 * (q1 - 1)) / 2 < a11) q1++;
  while ((q0 * (q0 - 1)) / 2 < a00) q0++;
  if ((q1 * (q1 - 1)) / 2 > a11 || (q0 * (q0 - 1)) / 2 > a00) {
    cout << f << endl;
    return 0;
  }
  if (q0 * q1 != a01 + a10) {
    if (q0 == 0 && q1 == a01 + a10)
      q0++;
    else if (q1 == 0 && q0 == a01 + a10)
      q1++;
    else if (q1 == 0 && q0 == 0 && a01 + a10 == 1) {
      q0++;
      q1++;
    } else {
      cout << f << endl;
      return 0;
    }
  }
  if (q1 == 0 && q0 == 0) {
    printf("1");
    cout << endl;
  }
  if (q0 == 0) {
    for (int i = 0; i < q1; i++) printf("1");
    cout << endl;
    return 0;
  }
  if (q1 == 0) {
    for (int i = 0; i < q0; i++) printf("0");
    cout << endl;
    return 0;
  }
  long long e1 = a01 / q0;
  long long mn = a01 % q0;
  for (int i = 0; i < q1 - e1 - 1; i++) printf("1");
  for (int i = 0; i < mn; i++) printf("0");
  if (e1 != q1) printf("1");
  for (int i = 0; i < q0 - mn; i++) printf("0");
  for (int i = 0; i < e1; i++) printf("1");
  cout << endl;
  return 0;
}
