#include<iostream>
#include<queue>
#include<string>
#include<stdio.h>
#include<cstring>
#include <cstdlib>
#include<sstream>
#include <algorithm>
using namespace std;
int m, n;
queue<string> sq[10005];
int main() {
ios::sync_with_stdio(false);
cin >> m >> n;
cin.get();
while (m--) {
for (int j = 0; j < n; j++) {
if(!sq[j].empty()) sq[j] = queue<string>();
string s;
string temp;
getline(cin, s); stringstream ss(s);
while (getline(ss, temp, ' ')) {
sq[j].push(temp);
}
}
while (1) {
int cnt = 0;
for (int k = 0; k < n; k++) {
string st;
if (sq[k].empty() ) continue;
st = sq[k].front();
int intst = std::atoi(st.substr(1, st.size() - 1).c_str());
if (sq[intst].empty()) break;
int intmubiao = std::atoi(sq[intst].front().substr(1, st.size() - 1).c_str());
if (intmubiao != k || sq[intst].front()[0] == st[0]) continue;
sq[k].pop(); sq[intst].pop();
k--; cnt++;
}
if (!cnt) break;
}
bool flag = true;
for (int u = 0; u < n; u++) {
if (!sq[u].empty()) {
flag = false;
cout << 1 << endl;
break;
}
}
if (flag == true) cout << 0 << endl;
}
return 0;
}