#include <bits/stdc++.h>   using namespace std;   long long a[1000000 + 100], f2, x1, x2, b[1000000 + 100], razl, sol, pok1, pok2;   double f1;   int main() {     for (int i = 1; i <= 4; i++) cin >> a[i];     f1 = sqrt(1 + 8 * a[1]) * 1.0;     f2 = sqrt(1 + 8 * a[1]);     if (f1 != f2) {       printf( Impossible n );       return 0;     }     f1 = sqrt(1 + 8 * a[4]) * 1.0;     f2 = sqrt(1 + 8 * a[4]);     if (f1 != f2) {       printf( Impossible n );       return 0;     }     x1 = 1 + sqrt(1 + 8 * a[1]);     x1 /= 2;     x2 = 1 + sqrt(1 + 8 * a[4]);     x2 /= 2;     if (a[1] == 0 && a[2] == 0 && a[3] == 0) x1 = 0;     if (a[4] == 0 && a[2] == 0 && a[3] == 0) x2 = 0;     if (a[2] + a[3] != x1 * x2) {       printf( Impossible n );       return 0;     }     for (int i = 1; i <= x1; i++) b[i] = 0;     for (int i = x1 + 1; i <= x1 + x2; i++) b[i] = 1;     sol = x1 * x2;     pok1 = x1;     pok2 = x1 + x2;     while (sol != a[2]) {       if (sol - x2 > a[2])         swap(b[pok1], b[pok2]), pok1--, pok2--, sol -= x2;       else {         swap(b[pok1], b[pok1 + sol - a[2]]);         break;       }     }     if (x1 + x2 == 0) printf( 0 );     for (int i = 1; i <= x1 + x2; i++) cout << b[i];     printf(  n );     return 0;   }   