#include <bits/stdc++.h>
// #define int long long
#define fi first
#define se second
#define ins insert
#define pb push_back
#define flu fflush(stdout)
#define pii std::pair<int, int>
using std::map;
using std::priority_queue;
using std::queue;
using std::set;
using std::stack;
using std::string;
using std::swap;
using std::unordered_map;
using std::unordered_set;
using std::vector;
int read(int x = 0, bool f = 0, char ch = getchar())
{
while (ch < 48 or ch > 57)
f = ch == 45, ch = getchar();
while (48 <= ch and ch <= 57)
x = x * 10 + ch - 48, ch = getchar();
return f ? -x : x;
}
int pow(int x, int k, int P, int res = 1)
{
for (; k; k >>= 1, x = x * x % P)
if (k & 1)
res = res * x % P;
return res;
}
const int N = 1e6 + 5;
const int P = 998244353;
int n, m, sum;
string s, t;
void sub()
{
int l = n;
do
t[l--] ^= 1, sum++;
while (t[l + 1] & 1);
sum -= 2;
}
void dfs(int d)
{
if (!sum)
return;
if (t[d] & 1)
putchar('1'), sum--, t[d] = '0';
else
putchar('0'), sub();
dfs(d + 1);
}
void solve()
{
std::cin >> n >> s;
t.reserve(n + 1), m = s.size();
for (int i = 1; i <= m; i++)
t[i + n - m] = s[i - 1], sum += s[i - 1] - 48;
putchar('1'), sub(), dfs(1), puts("");
}
signed main()
{
#ifndef ONLINE_JUDGE
freopen("my_input.in", "r", stdin);
#endif
for (int T = 1; T--; solve())
;
#ifndef ONLINE_JUDGE
std::cerr << (double)clock() / CLOCKS_PER_SEC << std::endl;
#endif
return 0;
}