#include <cstdio>
#include <queue>
#include <algorithm>

using namespace std;

char s[1000002];
char t[1000002];
char ans1[2000001];
char ans2[2000001];

void add_front(deque <pair<int, pair<int, int>>>& d, int c, int x, int y) {
    if (!d.empty() && d.front().second.first == x && d.front().second.second == y) {
        d.front().first += c;
    } else {
        d.push_front(make_pair(c, make_pair(x, y)));
    }
}

void add_back(deque <pair<int, pair<int, int>>>& d, int c, int x, int y) {
    if (!d.empty() && d.back().second.first == x && d.back().second.second == y) {
        d.back().first += c;
    } else {
        d.push_back(make_pair(c, make_pair(x, y)));
    }
}

void remove(deque <pair<int, pair<int, int>>>& d, int c) {
    if (d.back().first == c) {
        d.pop_back();
    } else {
        d.back().first -= c;
    }
}

int main() {
    int n, m, k, p, i, j, l;
    deque <pair<int, pair<int, int>>> d, d2;
    
    scanf("%d %d %d", &n, &m, &k);
    
    p = max(n, m) + 1;
    
    for (i = 0; i < p; i++) s[i] = t[i] = '0';
    
    scanf("%s", s + p - n);
    scanf("%s", t + p - m);
    
    add_back(d, 1e9, 0, 0);
    
    for (i = 0; i < p; i++) {
        if (s[i] == '1' && t[i] == '1') {
            int c = k, f = 0;
            
            while (c > 0) {
                int x = d.back().second.first;
                int y = d.back().second.second;
                
                if (x == 0 && y == 0) {
                    int z = min(d.back().first, c);
                    
                    add_front(d2, z, 0, 0);
                    remove(d, z);
                    c -= z;
                } else if (x == 0 && y == 1) {
                    add_front(d2, 1, 0, 0);
                    add_front(d2, 1, 1, 0);
                    remove(d, 1);
                    
                    x = d.back().second.first;
                    y = d.back().second.second;
                    
                    if (x == 0 && y == 1) {
                        add_front(d2, d.back().first, 0, 0);
                        remove(d, d.back().first);
                        
                        x = d.back().second.first;
                        y = d.back().second.second;
                    }
                    
                    remove(d, 1);
                    
                    if (x == 0 && y == 0) {
                        add_back(d, 1, 0, 1);
                        f = 1;
                        break;
                    } else {
                        c--;
                    }
                } else {
                    add_front(d2, 1, 0, 0);
                    add_front(d2, 1, 0, 1);
                    remove(d, 1);
                    
                    x = d.back().second.first;
                    y = d.back().second.second;
                    
                    if (x == 1 && y == 0) {
                        add_front(d2, d.back().first, 0, 0);
                        remove(d, d.back().first);
                        
                        x = d.back().second.first;
                        y = d.back().second.second;
                    }
                    
                    remove(d, 1);
                    
                    if (x == 0 && y == 0) {
                        add_back(d, 1, 1, 0);
                        f = 1;
                        break;
                    } else {
                        c--;
                    }
                    
                }
            }
            
            if (f == 0) add_back(d, 1, 1, 1);
            
            while (!d2.empty()) {
                add_back(d, d2.front().first, d2.front().second.first, d2.front().second.second);
                d2.pop_front();
            }
        } else {
            add_back(d, 1, s[i] - '0', t[i] - '0');
        }
    }
    
    for (i = 0; i < d.size(); i++) {
        if (d[i].second.first > 0) break;
    }
    
    for (l = 0; i < d.size(); i++) {
        for (j = 0; j < d[i].first; j++) ans1[l++] = d[i].second.first + '0';
    }
    
    for (i = 0; i < d.size(); i++) {
        if (d[i].second.second > 0) break;
    }
    
    for (l = 0; i < d.size(); i++) {
        for (j = 0; j < d[i].first; j++) ans2[l++] = d[i].second.second + '0';
    }
    
    printf("%s\n", ans1);
    printf("%s\n", ans2);
    
    return 0;
}


Measured memory_bytes: 18064