#include <bits/stdc++.h>
using namespace std;
vector<int> lis(const vector<int> &v) {
vector<int> lis = {}, res = {};
res.reserve(v.size());
for(int x : v) {
auto it = lower_bound(lis.begin(), lis.end(), x);
if(it == lis.end()) lis.push_back(x);
else *it = x;
res.push_back(lis.size());
}
return res;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, d;
cin>>n>>d;
vector<int> v(n);
for(int &x : v) cin>>x;
vector<int> a = lis(v);
reverse(v.begin(), v.end());
for(int &x : v) x = -x;
vector<int> b = lis(v);
reverse(b.begin(), b.end());
int ans = 1;
for(int i = 0; i < n-1; i++) ans = max(ans, a[i] + b[i + 1]);
// for(int x : a) cout << x << ' '; cout << '\n';
// for(int x : b) cout << x << ' '; cout << '\n';
cout << ans << '\n';
return 0;
}