#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const double PI = 3.14159265;
void imp() {
  cout << "Impossible\n";
  exit(0);
}
long long num(long long a) {
  long long t = sqrt(1 + 8 * a);
  if (t * t != 1 + 8 * a) imp();
  return (1 + t) / 2;
}
void pt(int b) { cout << b; }
int main() {
  ios::sync_with_stdio(false);
  long long a00, a01, a10, a11;
  cin >> a00 >> a01 >> a10 >> a11;
  if (a00 == 0 && a11 == 0) {
    if (a10 + a01 == 0) {
      pt(1);
      cout << endl;
      return 0;
    }
    if (a10 + a01 > 1) imp();
    if (a10) {
      pt(1);
      pt(0);
    }
    if (a01) {
      pt(0);
      pt(1);
    }
    return 0;
  }
  if (a00 == 0) {
    int n = num(a11);
    if (a10 + a01 == 0) {
      for (int i = 0; i < n; i++) pt(1);
      cout << endl;
      return 0;
    }
    if (a10 + a01 != n) imp();
    for (int i = 0; i < a10; i++) pt(1);
    pt(0);
    for (int i = 0; i < a01; i++) pt(1);
    cout << endl;
    return 0;
  }
  if (a11 == 0) {
    int n = num(a00);
    if (a10 + a01 == 0) {
      for (int i = 0; i < n; i++) pt(0);
      cout << endl;
      return 0;
    }
    if (a10 + a01 != n) imp();
    for (int i = 0; i < a01; i++) pt(0);
    pt(1);
    for (int i = 0; i < a10; i++) pt(0);
    cout << endl;
    return 0;
  }
  int p = num(a00);
  int q = num(a11);
  int n = num(a00 + a01 + a10 + a11);
  if (p + q != n) imp();
  if (q == 0) {
    if (a01 || a10) imp();
    for (int i = 0; i < p; i++) pt(0);
    cout << endl;
    return 0;
  }
  int A = a01 / q;
  int B = a01 % q;
  if (B == 0) {
    if (p < A) imp();
    for (int i = 0; i < A; i++) pt(0);
    for (int i = 0; i < q; i++) pt(1);
    for (int i = 0; i < p - A; i++) pt(0);
    cout << endl;
    return 0;
  }
  if (p < A + 1) imp();
  for (int i = 0; i < A; i++) pt(0);
  for (int i = 0; i < q - B; i++) pt(1);
  pt(0);
  for (int i = 0; i < B; i++) pt(1);
  for (int i = 0; i < p - A - 1; i++) pt(0);
  cout << endl;
  return 0;
}
