#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10,INF=0x3f3f3f3f;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
void Write(int x){if(x<0){putchar('-'),Write(-x);return;}if(x<10){putchar(x+'0');return;}Write(x/10),putchar(x%10+'0');}
void write(int x,char *s){Write(x),printf("%s",s);}
void solve()
{
int n=read(),m=read(),k=read(),p=read();string s="0",t="0",u="0";
for(int i=1;i<n;i++) s+=s[i-1]^1,t+=i%(m-1)==0?t[i-1]:t[i-1]^1;
u=t;
for(int i=n-1;i;i--)
if(u[i]==u[i-1])
{
u[i]^=1;
for(int j=i+1;j<n;j++) u[j]=u[j-1]^1;
break;
}
int ans1=0,ans2=0,ans3=0,lst=0;
for(int i=1;i<n;i++)
if(s[i]==s[i-1]) lst=i,ans1+=k;
else if(lst&&i-lst-1>=m) ans1+=p;
lst=0;
for(int i=1;i<n;i++)
if(t[i]==t[i-1]) lst=i,ans2+=k;
else if(lst&&i-lst-1>=m) ans2+=p;
lst=0;
for(int i=1;i<n;i++)
if(u[i]==u[i-1]) lst=i,ans3+=k;
else if(lst&&i-lst-1>=m) ans3+=p;
if(ans1>=ans2&&ans1>=ans3) write(ans1,"\n"),cout<<s<<"\n";
else if(ans2>=ans1&&ans2>=ans3) write(ans2,"\n"),cout<<t<<"\n";
else write(ans3,"\n"),cout<<u<<"\n";
}
signed main()
{
int T=read();
while(T--) solve();
}