#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
typedef vector<pii> vpii;
#define pb push_back
#define REP(i,n) for(int i=0;i<int(n);++i)
#define out(x) cerr<<#x"="<<x<<endl
struct rec{
    int x0, y0, x1, y1;
    void read(){
        scanf("%d%d%d%d",&x0,&y0,&x1,&y1);
    }
    bool operator<(rec r)const{
        if(x0!=r.x0)return x0<r.x0;
        return y0<r.y0;
    }
} r[23];
bool g[111][111];
int row=0, col=0, h, w;
void fi(){
    for(;1;++row){
        bool found=0;
        //out(row);out(col);
        for(;col<w;++col)if(!g[row][col]){
            found=1;
            break;
        }
        if(found)break;
        if(col>=w)col=0;
    }
}
vpii ans;
int main(){
    freopen("gridbaglayout.in","r",stdin);
    freopen("gridbaglayout.out","w",stdout);
    int n;
    scanf("%d%d%d",&h,&w,&n);
    REP(i,n)r[i].read();
    sort(r,r+n);
    bool ff=0, gg=0;
	row=col=0;
    REP(i,n){
        if(r[i].x1+1==h)ff=1;
		if(r[i].y0+1==w)gg=1;
        //REP(u,h)REP(v,w)printf("%d%c",int(g[u][v])," \n"[v+1==w]);
        //fflush(stdout);
        fi();
        if(row!=r[i].x0 || col!=r[i].y0){
            puts("Impossible");
            return 0;
        }
        ans.pb(pii(r[i].x1-r[i].x0+1,r[i].y1-r[i].y0+1));
        for(int u=r[i].x0;u<=r[i].x1;++u)
            for(int v=r[i].y0;v<=r[i].y1;++v)
                g[u][v]=1;
    }
    if((r[n-1].y1+1!=w&&gg==0)||ff==0){
        puts("Impossible");
        return 0;
    }
    puts("Panel container = new Panel(new GridBagLayout());");
    puts("GridBagConstraints gbc = new GridBagConstraints();");
    REP(i,ans.size()){
        printf("gbc.gridheight = %d;\n", ans[i].first);
        printf("gbc.gridwidth = ");
        if(r[i].y1+1==w && i+1!=ans.size())puts("GridBagConstraints.REMAINDER;");
        else printf("%d;\n", ans[i].second);
        puts("container.add(new Component(), gbc);");
    }
}
