#include<bits/stdc++.h>
using namespace std;
map<string ,int> map1;
void allPossible(int*arr,int len,int size,int m,int n)
{ int arr1[m][n];
if(len==size) //if all the elements in the array is filled either with 0 or 1 function prints the array in matrix form
{ int counter=0;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
arr1[i][j]=arr[counter++];
}
}
string p;
ostringstream oss("");
for (int temp = 0; temp < m; temp++)
for (int temp1 = 0; temp1 < n; temp1++)
oss << arr1[temp][temp1];
p=oss.str();
map1.insert(pair<string,int>(p,0));
return;
}
arr[len]=0;
allPossible(arr,len+1,size,m,n);
arr[len]=1;
allPossible(arr,len+1,size,m,n);
}
int main(){
int M,N,m,n;
cin>>M>>N>>m>>n;
int matrix[M][N];
srand(time(NULL));
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
matrix[i][j]=rand()%2;
int t=1;
while(t)
{
int arr[m*n];
allPossible(arr,0,m*n,m,n);
map <string, int> :: iterator itr;
for (itr = map1.begin(); itr != map1.end(); ++itr)
{
string q;
q=itr->first;
int p=0;
int pp[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
pp[i][j]=q[p++]-48;
int count=0;
for(int i=0;i<=M-m;i++)
{for(int j=0;j<=N-n;j++)
{bool flag=1;
for(int k=i;k<i+m;k++)
for(int l=j;l<j+n;l++)
if(pp[k-i][l-j]!=matrix[k][l])
flag=0;
if(flag==1)
count++;
}}
itr->second=count;
}
//CHECKING WHETHER THE GENERATED NUMBER IS UNIFORM OR NOT
bool signify=1;
for (itr = map1.begin(); itr != map1.end(); ++itr)
{ int c=m*n;
double t=(double)((M-m+1)*(N-n+1)/pow(2,c));
double p=(double)((M-m+1)*(N-n+1)/pow(2,c));
double tt=floor(t),pp=ceil(p);
if(itr->second>tt&&itr->second<pp)
;
else
signify=0;
}
if(signify==1)
{cout<<"UNIFORM WORD";
break;
}
map <string, int> :: iterator itt;
itr=map1.begin();
int max=itr->second;
itt=itr;
for (itr = map1.begin(); itr != map1.end(); ++itr)
{
if(itr->second>max)
{max=itr->second;
itt=itr;
}
}
string pp=itt->first;
int p=0;
int ppp[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
ppp[i][j]=pp[p++]-48;
itr=map1.begin();
for(int i=0;i<=M-m;i++)
{for(int j=0;j<=N-n;j++)
{bool flag=1;
for(int k=i;k<i+m;k++)
for(int l=j;l<j+n;l++)
if(ppp[k-i][l-j]!=matrix[k][l])
flag=0;
if(flag==1)
{ string r;
r=itr->first;
int p=0;
int pp[m*n];
for(int i=0;i<m*n;i++)
pp[i]=r[p++]-48;
int c=0;
for(int k=i;k<i+m;k++)
for(int l=j;l<j+n;l++)
matrix[k][l]=pp[c++];
itr++;
}
}}
map1.clear();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbWFwPHN0cmluZyAsaW50PiBtYXAxOwp2b2lkIGFsbFBvc3NpYmxlKGludCphcnIsaW50IGxlbixpbnQgc2l6ZSxpbnQgbSxpbnQgbikKeyBpbnQgYXJyMVttXVtuXTsKICAgIGlmKGxlbj09c2l6ZSkgLy9pZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBhcnJheSBpcyBmaWxsZWQgZWl0aGVyIHdpdGggMCAgb3IgMSBmdW5jdGlvbiBwcmludHMgdGhlIGFycmF5IGluIG1hdHJpeCBmb3JtCiAgICB7IGludCBjb3VudGVyPTA7CiAgICAgICAgZm9yKGludCBpPTA7aTxtO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8bjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFycjFbaV1bal09YXJyW2NvdW50ZXIrK107CgogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgICAgIHN0cmluZyBwOwogICAgICBvc3RyaW5nc3RyZWFtIG9zcygiIik7CiAgICAgIGZvciAoaW50IHRlbXAgPSAwOyB0ZW1wIDwgbTsgdGVtcCsrKQogICAgICBmb3IgKGludCB0ZW1wMSA9IDA7IHRlbXAxIDwgbjsgdGVtcDErKykKICAgICAgICBvc3MgPDwgYXJyMVt0ZW1wXVt0ZW1wMV07CgogICAgcD1vc3Muc3RyKCk7CgogICBtYXAxLmluc2VydChwYWlyPHN0cmluZyxpbnQ+KHAsMCkpOwoKCgoKCgoKCgoKICAgIHJldHVybjsKCiAgICB9CgoKICAgIGFycltsZW5dPTA7CiAgICBhbGxQb3NzaWJsZShhcnIsbGVuKzEsc2l6ZSxtLG4pOwogICAgYXJyW2xlbl09MTsKICAgIGFsbFBvc3NpYmxlKGFycixsZW4rMSxzaXplLG0sbik7CgoKCgp9CgppbnQgbWFpbigpewogICAgaW50IE0sTixtLG47CiAgICBjaW4+Pk0+Pk4+Pm0+Pm47CgogICAgICAgIGludCBtYXRyaXhbTV1bTl07CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKCgogICAgIGZvcihpbnQgaT0wO2k8TTtpKyspCiAgICAgZm9yKGludCBqPTA7ajxOO2orKykKICAgICAgbWF0cml4W2ldW2pdPXJhbmQoKSUyOwoKIGludCB0PTE7IAp3aGlsZSh0KQp7CiAgICBpbnQgYXJyW20qbl07CiAgICBhbGxQb3NzaWJsZShhcnIsMCxtKm4sbSxuKTsKCgoKICAgIG1hcCA8c3RyaW5nLCBpbnQ+IDo6IGl0ZXJhdG9yIGl0cjsKICAgICBmb3IgKGl0ciA9IG1hcDEuYmVnaW4oKTsgaXRyICE9IG1hcDEuZW5kKCk7ICsraXRyKQogICAgewoKCiAgICAgICAgICBzdHJpbmcgcTsKICAgICAgICAgIHE9aXRyLT5maXJzdDsKICAgICAgICAgIGludCBwPTA7CiAgICAgICAgICBpbnQgcHBbbV1bbl07CiAgICAgICAgICBmb3IoaW50IGk9MDtpPG07aSsrKQogICAgICAgICAgZm9yKGludCBqPTA7ajxuO2orKykKICAgICAgICAgICAgcHBbaV1bal09cVtwKytdLTQ4OwoKCgoKCiAgICAgICAgaW50IGNvdW50PTA7CiAgICAgICAgZm9yKGludCBpPTA7aTw9TS1tO2krKykKICAgICAgIHtmb3IoaW50IGo9MDtqPD1OLW47aisrKQogICAgICAge2Jvb2wgZmxhZz0xOwogICAgICAgZm9yKGludCBrPWk7azxpK207aysrKQogICAgICAgZm9yKGludCBsPWo7bDxqK247bCsrKQogICAgICAgaWYocHBbay1pXVtsLWpdIT1tYXRyaXhba11bbF0pCiAgICAgICBmbGFnPTA7CgogICAgICAgaWYoZmxhZz09MSkKICAgICAgIGNvdW50Kys7CgoKCiAgICAgICB9fQoKCgoKaXRyLT5zZWNvbmQ9Y291bnQ7CgoKCiAgICB9Ci8vQ0hFQ0tJTkcgV0hFVEhFUiBUSEUgR0VORVJBVEVEIE5VTUJFUiBJUyBVTklGT1JNIE9SIE5PVApib29sIHNpZ25pZnk9MTsKIGZvciAoaXRyID0gbWFwMS5iZWdpbigpOyBpdHIgIT0gbWFwMS5lbmQoKTsgKytpdHIpCiB7ICAgaW50IGM9bSpuOwoKICAgIGRvdWJsZSB0PShkb3VibGUpKChNLW0rMSkqKE4tbisxKS9wb3coMixjKSk7CiAgICBkb3VibGUgcD0oZG91YmxlKSgoTS1tKzEpKihOLW4rMSkvcG93KDIsYykpOwogICAgZG91YmxlIHR0PWZsb29yKHQpLHBwPWNlaWwocCk7CgogICAgIGlmKGl0ci0+c2Vjb25kPnR0JiZpdHItPnNlY29uZDxwcCkKICAgICA7CiAgICAgZWxzZQogICAgIHNpZ25pZnk9MDsKCiB9CmlmKHNpZ25pZnk9PTEpCntjb3V0PDwiVU5JRk9STSBXT1JEIjsKYnJlYWs7Cn0KICAgIG1hcCA8c3RyaW5nLCBpbnQ+IDo6IGl0ZXJhdG9yIGl0dDsKaXRyPW1hcDEuYmVnaW4oKTsKaW50IG1heD1pdHItPnNlY29uZDsKaXR0PWl0cjsKCmZvciAoaXRyID0gbWFwMS5iZWdpbigpOyBpdHIgIT0gbWFwMS5lbmQoKTsgKytpdHIpCnsgICAKICAgaWYoaXRyLT5zZWNvbmQ+bWF4KQp7bWF4PWl0ci0+c2Vjb25kOwogaXR0PWl0cjsgIAp9Cn0KCnN0cmluZyBwcD1pdHQtPmZpcnN0OwogICBpbnQgcD0wOwogICAgICAgICAgaW50IHBwcFttXVtuXTsKICAgICAgICAgIGZvcihpbnQgaT0wO2k8bTtpKyspCiAgICAgICAgICBmb3IoaW50IGo9MDtqPG47aisrKQogICAgICAgICAgIHBwcFtpXVtqXT1wcFtwKytdLTQ4OwoKCgoKICAgICAgIGl0cj1tYXAxLmJlZ2luKCk7CgogICAgICAgIAogICAgICAgIGZvcihpbnQgaT0wO2k8PU0tbTtpKyspCiAgICAgICB7Zm9yKGludCBqPTA7ajw9Ti1uO2orKykKICAgICAgIHtib29sIGZsYWc9MTsKICAgICAgIGZvcihpbnQgaz1pO2s8aSttO2srKykKICAgICAgIGZvcihpbnQgbD1qO2w8aituO2wrKykKICAgICAgIGlmKHBwcFtrLWldW2wtal0hPW1hdHJpeFtrXVtsXSkKICAgICAgIGZsYWc9MDsKCiAgICAgICBpZihmbGFnPT0xKQogICAgICB7IHN0cmluZyByOwogICAgICAgIHI9aXRyLT5maXJzdDsKICAgICAgICAgICAgICBpbnQgcD0wOwogICAgICAgICAgaW50IHBwW20qbl07CiAgICAgICAgICBmb3IoaW50IGk9MDtpPG0qbjtpKyspCiAgICAgICAKICAgICAgICAgICBwcFtpXT1yW3ArK10tNDg7CiAgICAgICAgICBpbnQgYz0wOwogICAgICAgICAgIGZvcihpbnQgaz1pO2s8aSttO2srKykKICAgICAgIGZvcihpbnQgbD1qO2w8aituO2wrKykKICAgICAgIG1hdHJpeFtrXVtsXT1wcFtjKytdOyAgICAgICAgICAgICAgICAgCiAgICAgICAgICBpdHIrKzsKICAgICAgCgogICAgICAgIH0KICAgICAgIH19CgoKICAgICAgICAgICAKCgoKCgoKCgoKCm1hcDEuY2xlYXIoKTsKCgp9CiAgICB9