#include <vector>
#include <iostream>
#include <unordered_map>
using namespace std;
typedef unordered_map<string,size_t> strmap;
typedef vector<bool> boolrow;
size_t regstring(strmap &sm,const string &str,size_t &id)
{
strmap::iterator smi=sm.find(str);
if(smi!=sm.end()) return smi->second;
sm[str]=id;
return id++;
}
int main()
{
size_t id=0,size,pairCount;
cin>>size>>pairCount;
vector<boolrow> tb(size,boolrow(size));
strmap sm;
while(pairCount--)
{
string sy,sx;
cin>>ws>>sx>>sy;
size_t y=regstring(sm,sy,id),x=regstring(sm,sx,id);
tb[y][x]=true;
}
for(size_t y=0;y<size;++y,cout<<endl) for(size_t x=0;x<size;++x) cout<<(" "+!x)<<tb[y][x];
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgdW5vcmRlcmVkX21hcDxzdHJpbmcsc2l6ZV90PiBzdHJtYXA7CnR5cGVkZWYgdmVjdG9yPGJvb2w+IGJvb2xyb3c7CgpzaXplX3QgcmVnc3RyaW5nKHN0cm1hcCAmc20sY29uc3Qgc3RyaW5nICZzdHIsc2l6ZV90ICZpZCkKICB7CiAgIHN0cm1hcDo6aXRlcmF0b3Igc21pPXNtLmZpbmQoc3RyKTsKICAgaWYoc21pIT1zbS5lbmQoKSkgcmV0dXJuIHNtaS0+c2Vjb25kOwogICBzbVtzdHJdPWlkOwogICByZXR1cm4gaWQrKzsKICB9CgppbnQgbWFpbigpCiAgewogICBzaXplX3QgaWQ9MCxzaXplLHBhaXJDb3VudDsKICAgY2luPj5zaXplPj5wYWlyQ291bnQ7CiAgIHZlY3Rvcjxib29scm93PiB0YihzaXplLGJvb2xyb3coc2l6ZSkpOwogICBzdHJtYXAgc207CiAgIHdoaWxlKHBhaXJDb3VudC0tKQogICAgIHsKICAgICAgc3RyaW5nIHN5LHN4OwogICAgICBjaW4+PndzPj5zeD4+c3k7CiAgICAgIHNpemVfdCB5PXJlZ3N0cmluZyhzbSxzeSxpZCkseD1yZWdzdHJpbmcoc20sc3gsaWQpOwogICAgICB0Ylt5XVt4XT10cnVlOwogICAgIH0KICAgZm9yKHNpemVfdCB5PTA7eTxzaXplOysreSxjb3V0PDxlbmRsKSBmb3Ioc2l6ZV90IHg9MDt4PHNpemU7Kyt4KSBjb3V0PDwoIiAiKyF4KTw8dGJbeV1beF07CiAgIHJldHVybiAwOwogIH0=