#include <bits/stdc++.h>
using namespace std;

const int maxn = 2e5+5;
const int maxm = 61;
typedef long long ll;


char s[maxm];
ll a[maxn];
int cnt[1<<15];
mt19937 rnd(time(0));
int random(int n){
	return (rnd()%n+n)%n+1;
}
int main(){
	int n,m,p;
	scanf("%d%d%d",&n,&m,&p);
	for(int i=1;i<=n;++i){
		scanf("%s",s);
		for(int j=0;j<m;++j){
			if(s[j]=='1'){
				a[i]|=1ll<<j; 
			}
		}
	}
	int ct=10,ans=0;
	vector<int>ansg;
	while(ct--){
		int u=random(n);
		vector<int>g;
		for(int i=0;i<m;++i){
			if(a[u]&(1ll<<i))g.push_back(i);
		}
		int sz=(int)g.size();
		memset(cnt,0,sizeof(int)*(1<<sz));
		for(int i=1;i<=n;++i){
			int now=0;
			for(int j=0;j<sz;++j){
				if((a[i]>>g[j])&1){
					now|=1<<j;
				}
			}
			cnt[now]++;
		}
		for(int i=0;i<sz;++i){
			for(int j=0;j<(1<<sz);++j){
				if((j>>i)&1){
					cnt[j^(1<<i)]+=cnt[j];
				}
			}
		}
		for(int i=0;i<(1<<sz);++i){
			int now=__builtin_popcount(i);
			if(cnt[i]>=(n+1)/2){
				if(ans<now){
					ans=now;
					ansg.clear();
					for(int j=0;j<sz;++j){
						if((i>>j)&1){
							ansg.push_back(g[j]);
						}
					}
				}
			}
		} 
	}
	int i=0;
	for(int j=0;j<m;++j){
		if(i<ansg.size() && ansg[i]==j)printf("1"),i++;else printf("0");
	}puts("");
}