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

void dbg_out() { cerr << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); }
#ifdef TUAN_DEBUG
#define dbg(...) cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

// O(random_people * (N * p + 3 ^ p + 2 ^ p))
// 50 * (2 * 10 ^ 5 + 3 ^ 15 + 2 ^ 15) = cca. 7,3 * 10 ^ 8

const int MAX = 150;

void run_case() {
    int N, M, P;
    cin >> N >> M >> P;
    vector<vector<bool>> A(N, vector<bool> (M, false));
    vector<vector<int>> ids(N);

    for (int i = 0; i < N; i++) {
            string S;
            cin >> S;

            for (int j = 0; j < M; j++) {
                if (S[j] == '1') {
                    A[i][j] = true;
                    ids[i].push_back(j);
                }
            }
    }

    int least = (N + 1) / 2;
    int most = 0;
    vector<int> best;
    vector<int> order(N);
    iota(order.begin(), order.end(), 0);
    random_shuffle(order.begin(), order.end());

    for (int it = 0; it < min(MAX, N); it++) {
        int cur = order[it];
        int sz = int(ids[cur].size());
        vector<int> cnt(1 << sz, 0);

        for (int i = 0; i < N; i++) {
            int mask = 0;

            for (int j = 0, shift = 0; j < sz; j++, shift++)
                if (A[i][ids[cur][j]])
                    mask |= 1 << shift;

            cnt[mask]++;
        }

        for (int mask = 0; mask < (1 << sz); mask++) {
            if (cnt[mask] > 0) {
                for (int submask = (mask - 1) & mask; submask > 0; submask = (submask - 1) & mask) {
                    cnt[submask] += cnt[mask];
                }
            }
        }

        for (int mask = 0; mask < (1 << sz); mask++) {
            int ones = __builtin_popcount(mask);

            if (cnt[mask] >= least && ones > most) {
                most = ones;
                best.clear();
                
                for (int k = 0; (1 << k) <= mask; k++)
                    if (mask & (1 << k))
                        best.push_back(ids[cur][k]);
            }
        }
    }
    
    string answer(M, '0');

    for (auto x : best)
        answer[x] = '1';

    cout << answer << '\n';
}



int main() {
    ios::sync_with_stdio(false);
#ifndef TUAN_DEBUG
    cin.tie(nullptr);
#endif
	
	int T = 1;

    for (int test = 1; test <= T; test++) {
        run_case();
    }

    return 0;
} 
