#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -f;
  for (; isdigit(ch); ch = getchar()) x = 10 * x + ch - '0';
  return x * f;
}
namespace qwq {
const int maxn = 500010, mod = 998244353, M = 499122177, G = 3;
int n, L, num, R[maxn], a[maxn], b[maxn], c[maxn], d[maxn];
int poly[maxn], inv[maxn];
inline int ksm(int x, int t) {
  int res = 1;
  while (t) {
    if (t & 1) res = 1LL * res * x % mod;
    x = 1LL * x * x % mod;
    t >>= 1;
  }
  return res;
}
inline void NTT(int *a, int f, int n, int L) {
  for (int i = 0; i < n; i++) R[i] = (R[i >> 1] >> 1) | ((i & 1) << (L - 1));
  for (int i = 0; i < n; i++)
    if (i < R[i]) swap(a[i], a[R[i]]);
  for (int i = 1; i < n; i <<= 1) {
    int wn = ksm(G, (mod - 1) / (i << 1));
    if (f == -1) wn = ksm(wn, mod - 2);
    for (int j = 0; j < n; j += (i << 1)) {
      int w = 1;
      for (int k = 0; k < i; k++, w = 1LL * w * wn % mod) {
        int x = a[j + k], y = 1LL * w * a[j + k + i] % mod;
        a[j + k] = ((x + y) % mod + mod) % mod;
        a[j + k + i] = ((x - y) % mod + mod) % mod;
      }
    }
  }
  if (f == -1) {
    int inv = ksm(n, mod - 2);
    for (int i = 0; i < n; i++) a[i] = 1LL * a[i] * inv % mod;
  }
}
inline void inverse(int *a, int *b, int n, int L) {
  if (n == 1) {
    b[0] = ksm(a[0], mod - 2);
    return;
  }
  inverse(a, b, n >> 1, L - 1);
  memcpy(c, a, n * sizeof(int));
  memset(c + n, 0, n * sizeof(int));
  NTT(c, 1, n << 1, L + 1);
  NTT(b, 1, n << 1, L + 1);
  for (int i = 0; i < (n << 1); i++)
    b[i] = 1LL * b[i] * ((2 - 1LL * c[i] * b[i] % mod + mod) % mod) % mod;
  NTT(b, -1, n << 1, L + 1);
  memset(b + n, 0, n * sizeof(int));
}
inline void sqrt(int *a, int *b, int n, int L) {
  if (n == 1) {
    b[0] = 1;
    return;
  }
  sqrt(a, b, n >> 1, L - 1);
  memset(d, 0, n * 2 * sizeof(int));
  inverse(b, d, n, L);
  memcpy(c, a, n * sizeof(int));
  memset(c + n, 0, n * sizeof(int));
  NTT(c, 1, n << 1, L + 1);
  NTT(b, 1, n << 1, L + 1);
  NTT(d, 1, n << 1, L + 1);
  for (int i = 0; i < n << 1; i++)
    b[i] = (1LL * c[i] * d[i] % mod + b[i]) % mod * M % mod;
  NTT(b, -1, n << 1, L + 1);
  memset(b + n, 0, n * sizeof(int));
}
}  // namespace qwq
char a[200010];
int n;
int main() {
  n = read();
  scanf("%s", a);
  int i;
  for (i = 0; i < n - 1; i++)
    if (a[i] > a[i + 1]) break;
  int j = i;
  for (i = 0; i < n; i++) {
    if (i == j) continue;
    cout << a[i];
  }
}

### Prompt

Please formulate a Cpp solution to the following problem:

You are given a string s consisting of n lowercase Latin letters.

You have to remove at most one (i.e. zero or one) character of this string in such a way that the string you obtain will be lexicographically smallest among all strings that can be obtained using this operation.

String s = s_1 s_2 ... s_n is lexicographically smaller than string t = t_1 t_2 ... t_m if n < m and s_1 = t_1, s_2 = t_2, ..., s_n = t_n or there exists a number p such that p ≤ min(n, m) and s_1 = t_1, s_2 = t_2, ..., s_{p-1} = t_{p-1} and s_p < t_p.

For example, "aaa" is smaller than "aaaa", "abb" is smaller than "abc", "pqr" is smaller than "z".

Input

The first line of the input contains one integer n (2 ≤ n ≤ 2 ⋅ 10^5) — the length of s.

The second line of the input contains exactly n lowercase Latin letters — the string s.

Output

Print one string — the smallest possible lexicographically string that can be obtained by removing at most one character from the string s.

Examples

Input


3
aaa


Output


aa


Input


5
abcda


Output


abca

Note

In the first example you can remove any character of s to obtain the string "aa".

In the second example "abca" < "abcd" < "abcda" < "abda" < "acda" < "bcda".

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -f;
  for (; isdigit(ch); ch = getchar()) x = 10 * x + ch - '0';
  return x * f;
}
namespace qwq {
const int maxn = 500010, mod = 998244353, M = 499122177, G = 3;
int n, L, num, R[maxn], a[maxn], b[maxn], c[maxn], d[maxn];
int poly[maxn], inv[maxn];
inline int ksm(int x, int t) {
  int res = 1;
  while (t) {
    if (t & 1) res = 1LL * res * x % mod;
    x = 1LL * x * x % mod;
    t >>= 1;
  }
  return res;
}
inline void NTT(int *a, int f, int n, int L) {
  for (int i = 0; i < n; i++) R[i] = (R[i >> 1] >> 1) | ((i & 1) << (L - 1));
  for (int i = 0; i < n; i++)
    if (i < R[i]) swap(a[i], a[R[i]]);
  for (int i = 1; i < n; i <<= 1) {
    int wn = ksm(G, (mod - 1) / (i << 1));
    if (f == -1) wn = ksm(wn, mod - 2);
    for (int j = 0; j < n; j += (i << 1)) {
      int w = 1;
      for (int k = 0; k < i; k++, w = 1LL * w * wn % mod) {
        int x = a[j + k], y = 1LL * w * a[j + k + i] % mod;
        a[j + k] = ((x + y) % mod + mod) % mod;
        a[j + k + i] = ((x - y) % mod + mod) % mod;
      }
    }
  }
  if (f == -1) {
    int inv = ksm(n, mod - 2);
    for (int i = 0; i < n; i++) a[i] = 1LL * a[i] * inv % mod;
  }
}
inline void inverse(int *a, int *b, int n, int L) {
  if (n == 1) {
    b[0] = ksm(a[0], mod - 2);
    return;
  }
  inverse(a, b, n >> 1, L - 1);
  memcpy(c, a, n * sizeof(int));
  memset(c + n, 0, n * sizeof(int));
  NTT(c, 1, n << 1, L + 1);
  NTT(b, 1, n << 1, L + 1);
  for (int i = 0; i < (n << 1); i++)
    b[i] = 1LL * b[i] * ((2 - 1LL * c[i] * b[i] % mod + mod) % mod) % mod;
  NTT(b, -1, n << 1, L + 1);
  memset(b + n, 0, n * sizeof(int));
}
inline void sqrt(int *a, int *b, int n, int L) {
  if (n == 1) {
    b[0] = 1;
    return;
  }
  sqrt(a, b, n >> 1, L - 1);
  memset(d, 0, n * 2 * sizeof(int));
  inverse(b, d, n, L);
  memcpy(c, a, n * sizeof(int));
  memset(c + n, 0, n * sizeof(int));
  NTT(c, 1, n << 1, L + 1);
  NTT(b, 1, n << 1, L + 1);
  NTT(d, 1, n << 1, L + 1);
  for (int i = 0; i < n << 1; i++)
    b[i] = (1LL * c[i] * d[i] % mod + b[i]) % mod * M % mod;
  NTT(b, -1, n << 1, L + 1);
  memset(b + n, 0, n * sizeof(int));
}
}  // namespace qwq
char a[200010];
int n;
int main() {
  n = read();
  scanf("%s", a);
  int i;
  for (i = 0; i < n - 1; i++)
    if (a[i] > a[i + 1]) break;
  int j = i;
  for (i = 0; i < n; i++) {
    if (i == j) continue;
    cout << a[i];
  }
}

```