// #undef _GLIBCXX_DEBUG
 
#include <bits/stdc++.h>
using namespace std;
 
#ifdef SG
	#include <debug.h>
#else
	#define show(...)
	#define debug(...)
	#define deepen(...)
	#define timer(...)
#endif
 
#define ARG4(_1,_2,_3,_4,...) _4
 
#define forn3(i,l,r) for (int i = int(l); i < int(r); ++i)
#define forn2(i,n) forn3 (i, 0, n)
#define forn(...) ARG4(__VA_ARGS__, forn3, forn2) (__VA_ARGS__)
 
#define ford3(i,l,r) for (int i = int(r) - 1; i >= int(l); --i)
#define ford2(i,n) ford3 (i, 0, n)
#define ford(...) ARG4(__VA_ARGS__, ford3, ford2) (__VA_ARGS__)
 
#define forv(i,v) for (auto i = v.begin(); i != v.end(); ++i)
#define forr(i,v) for (auto i = v.end(); i != v.begin() && (--i, 1); )
#define ve vector
#define pa pair
#define tu tuple
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define fs first
#define sc second
#define all(a) (a).begin(), (a).end()
#define sz(a) ((int)(a).size())
 
typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int ui;
typedef unsigned char uc;
typedef pa<int, int> pii;
typedef pa<int, ll> pil;
typedef pa<ll, int> pli;
typedef pa<ll, ll> pll;
typedef ve<int> vi;
 
const ld pi = 3.1415926535897932384626433832795l;
 
template<typename T> inline auto sqr (T x) -> decltype(x * x) {return x * x;}
template<typename T> inline T abs (T x) {return x > T() ? x : -x;}
template<typename T1, typename T2> inline bool umx (T1& a, T2 b) {if (a < b) {a = b; return 1;} return 0;}
template<typename T1, typename T2> inline bool umn (T1& a, T2 b) {if (b < a) {a = b; return 1;} return 0;}
 
const int N = 1010;   
const int K = 110;
int cor[N];
double coeff[K];
int my_cor;
int n, m;
 
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0, 1.0);

void process(int steps) {
	int max_cor = 0;
	forn(i, n) {
		umx(max_cor, cor[i]);
	}
	string s;
	cin >> s;
	double zero = 0, first = 0;
	forn(i, n) {
		if (s[i] == '0') {
			zero += coeff[min(max_cor - cor[i], K - 1)];
		} else {
			first += coeff[min(max_cor - cor[i], K - 1)];
		}
	}
	double th = distribution(generator);
	char my_c;
	if (th < first / (first + zero)) {
		my_c = '1';
	} else {
		my_c = '0';
	}
	cout << my_c << endl;
	char true_c;
	cin >> true_c;
	forn(i, n) {
		if (s[i] == true_c) {
			cor[i]++;
		}
	}
	if (my_c == true_c) {
		my_cor++;
    }
}
 
int main () {                                                                                              
	std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
	cout.setf(ios::showpoint | ios::fixed);
	cout.precision(20);
#ifdef SG
//	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
#endif
	forn(i, K) {
		coeff[i] = pow(1 / 1.3, i);
	}
	debug(coeff, coeff + K);
	cin >> n >> m;
	my_cor = 0;
	memset(cor, 0, sizeof(cor));
	forn(i, m) {
		process(i);
	}
 
	return 0;
}