#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using LD = long double;
using ULL = unsigned long long;
template <class T1, class T2>
using P = pair<T1, T2>;
using PII = P<int, int>;
using PLL = P<LL, LL>;
using PLD = P<LD, LD>;
template <class T>
using V = vector<T>;
using VI = V<int>;
using VLL = V<LL>;
using VLD = V<LD>;
using VB = V<bool>;
using VS = V<string>;
template <class T, class Comp = greater<T>>
using PQ = priority_queue<T, V<T>, Comp>;
template <class T>
int sz(const T& x) {
  return (int)size(x);
}
template <class T>
bool amin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool amax(T& a, const T& b) {
  if (b > a) {
    a = b;
    return true;
  }
  return false;
}
const size_t rseed =
    std::chrono::high_resolution_clock::now().time_since_epoch().count();
mt19937 rnd(rseed);
int randint(int lo, int hi) {
  return uniform_int_distribution<int>{lo, hi}(rnd);
}
int main() {
  int T;
  scanf("%d", &T);
  for (int t = (1); t <= (T); t++) {
    int n;
    scanf("%d", &n);
    string s(n + 1, ' ');
    scanf("%s", &s[0]);
    string a(n, ' '), b(n, ' ');
    bool f = false;
    for (int i = (0); i <= (n - 1); i++) {
      if (f) {
        a[i] = '0';
        b[i] = s[i];
      } else {
        if (s[i] == '1') {
          f = true;
          a[i] = '1';
          b[i] = '0';
        } else if (s[i] == '2')
          a[i] = b[i] = '1';
        else
          a[i] = b[i] = '0';
      }
    }
    printf("%s\n%s\n", a.c_str(), b.c_str());
  }
}
