#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<string>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main() {
long long int x, y, z, w,i,n=-1,m=-1;
scanf("%lld%lld%lld%lld", &x, &y, &z, &w);
if (x == 0 && y == 0 && z == 0 && w == 0) {
printf("1"); return 0;
}
if (x == 0) {
if (y == 0 && z == 0) n = 0; else n = 1;
}
else {
for (i = 2;i <= 1000000;i++) {
if (i * (i - 1) / 2 > x) { printf("impossible"); return 0; }
if (i * (i - 1) / 2 == x) { n = i; break; }
}
}
if (w == 0) {
if (y == 0 && z == 0) m = 0; else m = 1;
}
else {
for (i = 2;i <= 1000000;i++) {
if (i * (i - 1) / 2 > w) { printf("impossible"); return 0; }
if (i * (i - 1) / 2 == w) { m = i; break; }
}
}
if (n * m != y + z) { printf("impossible"); return 0; }
if (n == 0 || m == 0) {
for (i = 1;i <= n;i++) printf("0");
for (i = 1;i <= m;i++) printf("1");
return 0;
}
while (n+m!=0) {
if (z >= n) { printf("1"); z -= n; m--; }
else { printf("0"); n--; }
}
return 0;
}