#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define fi first
#define se second
#define ii pair<int, int>
const int N = 1e6 + 7;
int n, m, a[N], BIT[N], d[2][N];
ii nef[N];
void updateUP(int x, int val) {
while (x <= m) {
BIT[x] = max(BIT[x], val);
x += x & -x;
}
}
void updateDOWN(int x, int val) {
while (x > 0) {
BIT[x] = max(BIT[x], val);
x -= x & -x;
}
}
int getUP(int x) {
int res = 0;
while (x <= m) {
res = max(res, BIT[x]);
x += x & -x;
}
return res;
}
int getDOWN(int x) {
int res = 0;
while (x > 0) {
res = max(res, BIT[x]);
x -= x & -x;
}
return res;
}
void nen() {
sort(nef + 1, nef + n + 1);
m = 0;
for (int i = 1; i <= n; ++i) {
if (nef[i].fi != nef[i - 1].fi) ++m;
a[nef[i].se] = m;
}
}
void reset() {
memset(BIT, 0, sizeof(int) * (m + 2));
for (int i = 1; i <= n; ++i)
d[0][i] = d[1][i], d[1][i] = 0;
}
void inp() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
nef[i] = {a[i], i};
}
nen();
}
void solve() {
for (int i = 1; i <= n; ++i) {
d[1][i] = getDOWN(a[i] - 1) + 1;
updateUP(a[i], d[1][i]);
}
reset();
for (int i = 1; i <= n; ++i) {
d[1][i] = getUP(a[i] + 1) + 1;
if (d[1][i] > 2) updateDOWN(a[i], d[1][i]);
if (d[0][i] > 1) updateDOWN(a[i], d[0][i]);
}
reset();
for (int i = 1; i <= n; ++i) {
d[1][i] = getDOWN(a[i] - 1) + 1;
if (d[1][i] > 3) updateUP(a[i], d[1][i]);
if (d[0][i] > 2) updateUP(a[i], d[0][i]);
}
reset();
for (int i = 1; i <= n; ++i) {
d[1][i] = getUP(a[i] + 1) + 1;
if (d[1][i] > 4) updateDOWN(a[i], d[1][i]);
if (d[0][i] > 3) updateDOWN(a[i], d[0][i]);
}
int ans = 0;
for (int i = 1; i <= n; ++i)
ans = max(ans, d[1][i]);
cout << ans;
}
int main(){
faster;
inp();
solve();
return 0;
}
// cnlk
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpaSBwYWlyPGludCwgaW50PgoKY29uc3QgaW50IE4gPSAxZTYgKyA3OwppbnQgbiwgbSwgYVtOXSwgQklUW05dLCBkWzJdW05dOwppaSBuZWZbTl07Cgp2b2lkIHVwZGF0ZVVQKGludCB4LCBpbnQgdmFsKSB7Cgl3aGlsZSAoeCA8PSBtKSB7CgkJQklUW3hdID0gbWF4KEJJVFt4XSwgdmFsKTsKCQl4ICs9IHggJiAteDsKCX0KfQoKdm9pZCB1cGRhdGVET1dOKGludCB4LCBpbnQgdmFsKSB7Cgl3aGlsZSAoeCA+IDApIHsKCQlCSVRbeF0gPSBtYXgoQklUW3hdLCB2YWwpOwoJCXggLT0geCAmIC14OwoJfQp9CgppbnQgZ2V0VVAoaW50IHgpIHsKCWludCByZXMgPSAwOwoJd2hpbGUgKHggPD0gbSkgewoJCXJlcyA9IG1heChyZXMsIEJJVFt4XSk7CgkJeCArPSB4ICYgLXg7Cgl9CglyZXR1cm4gcmVzOwp9CgppbnQgZ2V0RE9XTihpbnQgeCkgewoJaW50IHJlcyA9IDA7Cgl3aGlsZSAoeCA+IDApIHsKCQlyZXMgPSBtYXgocmVzLCBCSVRbeF0pOwoJCXggLT0geCAmIC14OwoJfQoJcmV0dXJuIHJlczsKfQoKdm9pZCBuZW4oKSB7Cglzb3J0KG5lZiArIDEsIG5lZiArIG4gKyAxKTsKCW0gPSAwOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJaWYgKG5lZltpXS5maSAhPSBuZWZbaSAtIDFdLmZpKSArK207CgkJYVtuZWZbaV0uc2VdID0gbTsKCX0KfQoKdm9pZCByZXNldCgpIHsKCW1lbXNldChCSVQsIDAsIHNpemVvZihpbnQpICogKG0gKyAyKSk7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCgkJZFswXVtpXSA9IGRbMV1baV0sIGRbMV1baV0gPSAwOwp9Cgp2b2lkIGlucCgpIHsKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJY2luID4+IGFbaV07CgkJbmVmW2ldID0ge2FbaV0sIGl9OwoJfQoJbmVuKCk7Cn0KCnZvaWQgc29sdmUoKSB7Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQlkWzFdW2ldID0gZ2V0RE9XTihhW2ldIC0gMSkgKyAxOwoJCXVwZGF0ZVVQKGFbaV0sIGRbMV1baV0pOwoJfQoJcmVzZXQoKTsKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQlkWzFdW2ldID0gZ2V0VVAoYVtpXSArIDEpICsgMTsKCQlpZiAoZFsxXVtpXSA+IDIpIHVwZGF0ZURPV04oYVtpXSwgZFsxXVtpXSk7CgkJaWYgKGRbMF1baV0gPiAxKSB1cGRhdGVET1dOKGFbaV0sIGRbMF1baV0pOwoJfQoJcmVzZXQoKTsKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQlkWzFdW2ldID0gZ2V0RE9XTihhW2ldIC0gMSkgKyAxOwoJCWlmIChkWzFdW2ldID4gMykgdXBkYXRlVVAoYVtpXSwgZFsxXVtpXSk7CgkJaWYgKGRbMF1baV0gPiAyKSB1cGRhdGVVUChhW2ldLCBkWzBdW2ldKTsKCX0KCXJlc2V0KCk7CgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJZFsxXVtpXSA9IGdldFVQKGFbaV0gKyAxKSArIDE7CgkJaWYgKGRbMV1baV0gPiA0KSB1cGRhdGVET1dOKGFbaV0sIGRbMV1baV0pOwoJCWlmIChkWzBdW2ldID4gMykgdXBkYXRlRE9XTihhW2ldLCBkWzBdW2ldKTsKCX0KCglpbnQgYW5zID0gMDsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKCQlhbnMgPSBtYXgoYW5zLCBkWzFdW2ldKTsKCWNvdXQgPDwgYW5zOwp9CgppbnQgbWFpbigpewoJZmFzdGVyOwoJaW5wKCk7Cglzb2x2ZSgpOwoJcmV0dXJuIDA7Cn0KLy8gY25sawo=