#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
ostream &operator<<(ostream &os, pair<T1, T2> const &v) {
  return os << '(' << v.first << ", " << v.second << ')';
}
int n;
char str[300003];
string s;
int cnt[5];
bool check[5], mark[300003];
vector<int> a;
int main() {
  scanf("%d", &n);
  scanf("%s", &str);
  s = str;
  for (int i = 0; i < int((s).size()); ++i) {
    ++cnt[s[i] - 48];
  }
  for (int i = 0; i < int((s).size()); ++i) {
    if (cnt[s[i] - 48] > n / 3) a.push_back(i);
  }
  for (int i = 0; i <= 2; ++i)
    if (cnt[i] < n / 3) check[i] = 1;
  if (check[0]) {
    for (int i = 0; i < int((a).size()); ++i) {
      if (cnt[s[a[i]] - 48] <= n / 3) continue;
      if (cnt[0] < n / 3) {
        mark[a[i]] = 1;
        --cnt[s[a[i]] - 48];
        s[a[i]] = '0';
        ++cnt[0];
      }
    }
  }
  if (check[2]) {
    for (int i = int((a).size()) - 1; i >= 0; --i) {
      if (cnt[s[a[i]] - 48] <= n / 3) continue;
      if (!mark[a[i]] && cnt[2] < n / 3) {
        mark[a[i]] = 1;
        --cnt[s[a[i]] - 48];
        s[a[i]] = '2';
        ++cnt[2];
      }
    }
  }
  if (check[1]) {
    for (int i = 0; i < int((a).size()); ++i) {
      if (cnt[s[a[i]] - 48] <= n / 3) continue;
      if (s[a[i]] == '2' && !mark[a[i]] && cnt[1] < n / 3) {
        ++cnt[1];
        mark[a[i]] = 1;
        --cnt[s[a[i]] - 48];
        s[a[i]] = '1';
      }
    }
    for (int i = int((a).size()) - 1; i >= 0; --i) {
      if (cnt[s[a[i]] - 48] <= n / 3) continue;
      if (s[a[i]] == '0' && !mark[a[i]] && cnt[1] < n / 3) {
        ++cnt[1];
        mark[a[i]] = 1;
        --cnt[s[a[i]] - 48];
        s[a[i]] = '1';
      }
    }
  }
  cout << s << '\n';
  return 0;
}
