#include #include #include #include #include #include #include #include #include #include using namespace std; #define PB push_back() #define SZ(x) ((int)x.size()) #define PI 3.141592653589 #define REP(i,N) for(int(i)=0;(i)<(int)(N);++(i)) #define MX_C 100 // pocet cifier struct NUM { int P[MX_C]; int dlzka; }; void add( NUM &a, NUM &b) { int d=a.dlzka; if (b.dlzka>d) d=b.dlzka; for(int i=0;i0) { a.P[d]=zvysok%10; d++; } a.dlzka=d; } void init( NUM & a,int val=1) { memset(a.P,0,sizeof (a.P)); a.P[0]=val; if (val) a.dlzka=1; else a.dlzka=0; } int N,L,B,F; vector G[1005]; NUM DP[2][1005]; bool ZAC[1005]; bool KON[1005]; void prt(NUM res) { for(int i=res.dlzka-1;i>=0;--i) printf("%d",res.P[i]); } void solve_case() { // cout<N) { puts("impossible"); return; } int kde=0,kam=1; REP(i,L-1) { // memset(DP[kam],0,sizeof(DP[kam])); REP(j,N) init(DP[kam][j],0); REP(j,N) for (vector::iterator it=G[j].begin();it!=G[j].end();it++) // if (!ZAC[*it]&&((i==L-2&&KON[*it])||!KON[*it])) { // cout<<"INDEX : "<<*it<<" "<=0;--i) printf("%d",res.P[i]); putchar(10); } } int main() { // NUM a;init(a,0); // NUM b;init(b,1); // add(a,b); // prt(a); while(scanf("%d %d %d %d",&N,&L,&B,&F),N+L+B+F) { solve_case(); } return 0; }