#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 505;
const int mod = 1e9+7;
typedef pair<int, int> ii;
#define fi first
#define se second
#define read(_a, n) for(int i = 1; i <= n; i++) cin >> _a[i]
#define For(i, _a, _b) for(int i = _a; i <= _b; i++)
#define fastIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define File(_x,_y) if (fopen(_x, "r")) freopen(_x, "r", stdin)//,freopen(_y, "w", stdout)
#define file "main"
#define bit(x, i) ((x >> i) & 1)
#define bat(x, i) (x (1 << i))
int n, dp[maxn][maxn], a[maxn], xmin[maxn][maxn], num[maxn][maxn][maxn];
int f[maxn];
char ok[maxn][maxn];
bool dd[maxn];
void Make_seq()
{
for (int i = 1; i <= n; i++)
{
memset(dd, 0, sizeof(dd));
int xmax = -1, same = 0;
xmin[i][i - 1] = 501;
for (int j = i; j <= n; j++)
{
if (dd[a[j]]) same = 1;
dd[a[j]] = 1;
xmin[i][j] = min(xmin[i][j - 1], a[j]);
xmax = max(xmax, a[j]);
if (same)
{
ok[i][j] = 0;
continue;
}
if (xmax == (j - i + 1)) ok[i][j] = 2;
else ok[i][j] = 1;
}
}
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
if (ok[i][j] == 1)
{
memset(dd, 0, sizeof(dd));
for (int k = i; k <= j; k++) dd[a[k]] = 1;
num[i][j][501] = 0;
for (int k = 500; k >= 0; k--)
num[i][j][k] = num[i][j][k + 1] + dd[k];
}
}
int32_t main()
{
fastIO
cin >> n;
read(a, n);
Make_seq();
memset(dp, 60, sizeof(dp));
for (int i = n; i; i--)
{
dp[i][i] = 0;
for (int j = i + 1; j <= n; j++)
{
if (ok[i][j] > 0)
{
for (int k = i; k < j; k++)
{
int t = dp[i][k] + dp[k + 1][j];
if (xmin[i][k] < xmin[k + 1][j])
t += num[i][k][xmin[k + 1][j]] + j - k;
else
t += num[k + 1][j][xmin[i][k]] + k - i + 1;
dp[i][j] = min(dp[i][j], t);
}
}
}
}
memset(f, 60, sizeof(f));
f[0] = 0;
for (int i = 1; i <= n; i++)
for (int j = 0; j < i; j++)
if (ok[j + 1][i] == 2)
f[i] = min(f[i], f[j] + dp[j + 1][i]);
if (f[n] >= 1e9) cout << "Impossible";
else cout << f[n];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgbWF4biA9IDUwNTsKY29uc3QgaW50IG1vZCA9IDFlOSs3Owp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcmVhZChfYSwgbikgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBfYVtpXQojZGVmaW5lIEZvcihpLCBfYSwgX2IpIGZvcihpbnQgaSA9IF9hOyBpIDw9IF9iOyBpKyspCiNkZWZpbmUgZmFzdElPIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBGaWxlKF94LF95KSBpZiAoZm9wZW4oX3gsICJyIikpIGZyZW9wZW4oX3gsICJyIiwgc3RkaW4pLy8sZnJlb3BlbihfeSwgInciLCBzdGRvdXQpCiNkZWZpbmUgZmlsZSAibWFpbiIKI2RlZmluZSBiaXQoeCwgaSkgKCh4ID4+IGkpICYgMSkKI2RlZmluZSBiYXQoeCwgaSkgKHggICgxIDw8IGkpKQoKaW50IG4sIGRwW21heG5dW21heG5dLCBhW21heG5dLCB4bWluW21heG5dW21heG5dLCBudW1bbWF4bl1bbWF4bl1bbWF4bl07CmludCBmW21heG5dOwpjaGFyIG9rW21heG5dW21heG5dOwpib29sIGRkW21heG5dOwoKdm9pZCBNYWtlX3NlcSgpCnsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBtZW1zZXQoZGQsIDAsIHNpemVvZihkZCkpOwogICAgICAgIGludCB4bWF4ID0gLTEsIHNhbWUgPSAwOwogICAgICAgIHhtaW5baV1baSAtIDFdID0gNTAxOwogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDw9IG47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChkZFthW2pdXSkgc2FtZSA9IDE7CiAgICAgICAgICAgIGRkW2Fbal1dID0gMTsKICAgICAgICAgICAgeG1pbltpXVtqXSA9IG1pbih4bWluW2ldW2ogLSAxXSwgYVtqXSk7CiAgICAgICAgICAgIHhtYXggPSBtYXgoeG1heCwgYVtqXSk7CiAgICAgICAgICAgIGlmIChzYW1lKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBva1tpXVtqXSA9IDA7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoeG1heCA9PSAoaiAtIGkgKyAxKSkgb2tbaV1bal0gPSAyOwogICAgICAgICAgICBlbHNlIG9rW2ldW2pdID0gMTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSBpOyBqIDw9IG47IGorKykKICAgICAgICAgICAgaWYgKG9rW2ldW2pdID09IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1lbXNldChkZCwgMCwgc2l6ZW9mKGRkKSk7CiAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gaTsgayA8PSBqOyBrKyspIGRkW2Fba11dID0gMTsKICAgICAgICAgICAgICAgIG51bVtpXVtqXVs1MDFdID0gMDsKICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSA1MDA7IGsgPj0gMDsgay0tKQogICAgICAgICAgICAgICAgICAgIG51bVtpXVtqXVtrXSA9IG51bVtpXVtqXVtrICsgMV0gKyBkZFtrXTsKICAgICAgICAgICAgfQp9CgppbnQzMl90IG1haW4oKQp7CiAgICBmYXN0SU8KICAgIGNpbiA+PiBuOwogICAgcmVhZChhLCBuKTsKCiAgICBNYWtlX3NlcSgpOwoKICAgIG1lbXNldChkcCwgNjAsIHNpemVvZihkcCkpOwogICAgZm9yIChpbnQgaSA9IG47IGk7IGktLSkKICAgIHsKICAgICAgICBkcFtpXVtpXSA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDw9IG47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChva1tpXVtqXSA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSBpOyBrIDwgajsgaysrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGludCB0ID0gZHBbaV1ba10gKyBkcFtrICsgMV1bal07CiAgICAgICAgICAgICAgICAgICAgaWYgKHhtaW5baV1ba10gPCB4bWluW2sgKyAxXVtqXSkKICAgICAgICAgICAgICAgICAgICAgICAgdCArPSBudW1baV1ba11beG1pbltrICsgMV1bal1dICsgaiAtIGs7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB0ICs9IG51bVtrICsgMV1bal1beG1pbltpXVtrXV0gKyBrIC0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal0gPSBtaW4oZHBbaV1bal0sIHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG1lbXNldChmLCA2MCwgc2l6ZW9mKGYpKTsKICAgIGZbMF0gPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgICAgICBpZiAob2tbaiArIDFdW2ldID09IDIpCiAgICAgICAgICAgICAgICBmW2ldID0gbWluKGZbaV0sIGZbal0gKyBkcFtqICsgMV1baV0pOwoKICAgIGlmIChmW25dID49IDFlOSkgY291dCA8PCAiSW1wb3NzaWJsZSI7CiAgICBlbHNlIGNvdXQgPDwgZltuXTsKCiAgICByZXR1cm4gMDsKfQo=