# include <bits/stdc++.h>
# define speed ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
# define int long long
# define fi first
# define se second

using namespace std;

const int N = 2e5 + 7;
const int mod = 998244353;
const int INF = 1e18 + 7;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

string s[N];
int ind[N][70];
vector < int > vc[N];

int32_t main() {
    speed;
    int n, m, p;
    cin >> n >> m >> p;
    for ( int i = 1; i <= n; i++ ) {
        cin >> s[i];
        for ( int j = 0; j < m; j++ ) {
            if ( s[i][j] == '1' ) {
                ind[i][j] = 1;
                vc[i].push_back(j);
            }
        }
    }
    int mx = 0, ans = -1, ii = 0;
    int t = 50;
    while ( t-- ) {
        int i = rng() % n;
        if ( i == 0 ) {
            i = n;
        }
        int sz = vc[i].size();
        vector < int > ok((1 << sz) + 7), cnt((1 << sz) + 7);
        for ( int j = 1; j <= n; j++ ) {
            int mask = 0;
            for ( int x = 0; x < sz; x++ ) {
                mask |= (1 << x) * ind[j][vc[i][x]];
            }
            ok[mask]++;
        }
        for ( int mask = 0; mask < (1 << sz); mask++ ) {
            for ( int msk = mask; msk; msk = (msk - 1) & mask ) {
                if ( msk == 0 ) {
                    break;
                }
                // cout << mask << ' ' << msk << endl;
                cnt[msk] += ok[mask];
            }
        }
        for ( int mask = 1; mask < (1 << sz); mask++ ) {
            if ( cnt[mask] >= (n + 1) / 2 ) {
                int c = __builtin_popcount(mask);
                if ( c > mx ) {
                    mx = c;
                    ans = mask; 
                    ii = i;
                }
            }
        }
    }
    string mask(m, '0');
    for ( int x = 0; x < vc[ii].size(); x++ ) {
        if ( (ans >> x) & 1 ) {
            mask[vc[ii][x]] = '1';
        }
    }
    cout << mask; // double check
}