#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
    int plen,cnum,width,cspace;
    while(1){
        cin>>plen;
        if(plen==0)
            break;
        cin>>cnum>>width>>cspace;
        string str;
        getline(cin,str);
        vector<string> lines;
        while(getline(cin,str)&&str!="?"){
            // width¶¸ÂÅÊ¯é
            if(str==""){
                string s;
                for(int i = 0; i < width; i++)
                    s+='.';
                lines.push_back(s);
                continue;
            }
            for(int k = 0; k < (str.size()/width)+(str.size()%width==0?0:1); k++){
                // ÅIsÈçA.Åâ®
                if(k+1==(str.size()/width)+(str.size()%width==0?0:1)){
                    string s=str.substr(k*width);
                    for(int i = s.size(); i < width; i++)
                        s+='.';
                    lines.push_back(s);
                }
                else
                    lines.push_back(str.substr(k*width,width));
            }
        }
        const int onePageLine=plen*cnum;
        for(int i = 0; i < (lines.size()/onePageLine)+(lines.size()%onePageLine==0?0:1); i++){
            vector<string> page(plen,"");
            bool isDotOnly=true;
            for(int j = 0; j < cnum; j++){
                for(int k = 0; k < plen; k++){
                    // àµlinesÌI[ÜÅ«½çA½àÇÁµÈ¢
                    if(i*onePageLine+j*plen+k<lines.size())
                        page[k]+=lines[i*onePageLine+j*plen+k];
                    else{
                        for(int l = 0; l < width; l++)
                            page[k]+='.';
                    }
                    if(j!=cnum-1){
                        for(int l = 0; l < cspace; l++)
                            page[k]+='.';
                    }
                }
            }
            // .µ©È¢y[WÍóµÈ¢
            for(int j = 0; j < page.size(); j++){
                for(int k = 0; k < page[j].size(); k++){
                    if(page[j][k]!='.')
                        isDotOnly=false;
                }
            }
            if(!isDotOnly){
                // print
                for(int j = 0; j < page.size(); j++)
                    cout<<page[j]<<endl;
                cout<<"#"<<endl;
            }
        }
        cout<<'?'<<endl;
    }
    return 0;
}