/**
* author: orzvanh14 ( )
* created: 23.12.2022 10:08:02
* too lazy to update time
**/
// i wants to take ioi
//binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pi pair<int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK " "
#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n
#define LOG 19
const int INF = 1e18;
const int mod = 1e9+7;
const int N = 3e4 + 5;
int MOD = 998244353;
int bit[200000];
struct node{
int kc, u, hk;
bool operator<(const node& other) const {
return kc > other.kc;
}
};
struct edge{
int v, w, h;
};
int n;
int a[N];
int st[4 * N];
vector<int> v;
void nhap(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
v.pb(a[i]);
}
sort(all(v));
v.erase(unique(all(v)), v.end());
}
void build(int id, int l , int r){
if(l == r){
st[id] = a[l];
}
else{
int m = (l + r) / 2;
build(id * 2, l, m);
build(id * 2 + 1, m + 1, r);
st[id] = max(st[2 * id], st[2 * id + 1]);
}
}
void update(int id, int l, int r, int i, int val){
if(l > i || i > r) return;
if(l == r){
st[id] = val;
return;
}
else{
int m = (l + r) / 2;
update(2 * id, l, m, i, val);
update(2 * id + 1, m + 1, r, i, val);
st[id] = max(st[2 * id], st[2 * id + 1]);
}
}
int get(int id, int l, int r, int u, int v){
int get1 = 0, get2 = 0;
if(l > v || u > r) return -INF;
if(l >= u && r <= v) return st[id]; // doan [l..r] nam trong doan [u...v]
else{
int m = (l + r) / 2;
get1 = get(2 * id, l, m, u, v);
get2 = get(2 * id + 1, m + 1, r , u, v);
}
return max(get1, get2);
}
void solve(){
// build(1, 1, n);
int m = v.size();
int ans = 0;
int kq = 0;
for(int i = 1; i <= n; i++){
int pos = lb(all(v), a[i]) - v.begin() + 1;
int mx = 0;
if(pos > 1) mx = get(1, 1, m, 1, pos - 1);
int dp = mx + 1;
if(ans > dp) kq=1;
else if(ans == dp) kq++;
ans = max(ans, dp);
update(1, 1, m, pos, dp);
}
cout << kq << nn;
}
signed main() {
// freopen("piggyback.in", "r", stdin);
// freopen("piggyback.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
nhap();
solve();
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIG9yenZhbmgxNCAoICApCiAqICAgIGNyZWF0ZWQ6IDIzLjEyLjIwMjIgMTA6MDg6MDIKICogICAgdG9vIGxhenkgdG8gdXBkYXRlIHRpbWUKKiovCi8vIGkgd2FudHMgdG8gdGFrZSBpb2kKLy9iaW5odGluaHR1dGlua2hvbmdjYXljdW5odW5nbW90a2hpa2hvbmdjb250dXRpbm51YWxhdHV5ZXR2b25nCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG5uICJcbiIKI2RlZmluZSBwaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSB1YiB1cHBlcl9ib3VuZAojZGVmaW5lIGViIGVtcGxhY2VfYmFjawojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIFRBU0sgIiAiCgojZGVmaW5lIG1zKGEsIHgpIG1lbXNldChhLCB4LCBzaXplb2YoYSkpCiNkZWZpbmUgYWxsKGEpIGEuYmVnaW4oKSwgYS5lbmQoKQojZGVmaW5lIEFsbChhLCBuKSBhICsgMSwgYSArIDEgKyBuCgojZGVmaW5lIExPRyAxOQoKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gM2U0ICArIDU7CmludCBNT0QgPSA5OTgyNDQzNTM7CmludCBiaXRbMjAwMDAwXTsKc3RydWN0IG5vZGV7CglpbnQga2MsIHUsIGhrOwoJYm9vbCBvcGVyYXRvcjwoY29uc3Qgbm9kZSYgb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4ga2MgPiBvdGhlci5rYzsKICAgIH0KfTsKc3RydWN0IGVkZ2V7CglpbnQgdiwgdywgaDsKfTsKaW50IG47CmludCBhW05dOwppbnQgc3RbNCAqIE5dOwoKdmVjdG9yPGludD4gdjsKdm9pZCBuaGFwKCl7CiAgICBjaW4gPj4gbjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICB2LnBiKGFbaV0pOwogICAgfQogICAgc29ydChhbGwodikpOwogICAgdi5lcmFzZSh1bmlxdWUoYWxsKHYpKSwgdi5lbmQoKSk7Cn0Kdm9pZCBidWlsZChpbnQgaWQsIGludCBsICwgaW50IHIpewoJaWYobCA9PSByKXsKCQlzdFtpZF0gPSBhW2xdOwoJfQoJZWxzZXsKCQlpbnQgbSA9IChsICsgcikgLyAyOwoJCWJ1aWxkKGlkICogMiwgbCwgbSk7CgkJYnVpbGQoaWQgKiAyICsgMSwgbSArIDEsIHIpOwoJCXN0W2lkXSA9IG1heChzdFsyICogaWRdLCBzdFsyICogaWQgKyAxXSk7Cgl9Cn0Kdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBpLCBpbnQgdmFsKXsKCWlmKGwgPiBpIHx8IGkgPiByKSByZXR1cm47CglpZihsID09IHIpewoJCXN0W2lkXSA9ICB2YWw7CgkJcmV0dXJuOwoJfQoJZWxzZXsKCQlpbnQgbSAgPSAobCArIHIpIC8gMjsKCQl1cGRhdGUoMiAqIGlkLCBsLCBtLCBpLCB2YWwpOwoJCXVwZGF0ZSgyICogaWQgKyAxLCBtICsgMSwgciwgaSwgdmFsKTsKCQlzdFtpZF0gPSBtYXgoc3RbMiAqIGlkXSwgc3RbMiAqIGlkICsgMV0pOwoJfQp9CmludCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdil7CglpbnQgZ2V0MSA9IDAsIGdldDIgPSAwOwoJaWYobCA+IHYgfHwgdSA+IHIpIHJldHVybiAtSU5GOwoJaWYobCA+PSB1ICYmIHIgPD0gdikgcmV0dXJuIHN0W2lkXTsgLy8gZG9hbiBbbC4ucl0gbmFtIHRyb25nIGRvYW4gW3UuLi52XQoJZWxzZXsKCQlpbnQgbSA9IChsICsgcikgLyAyOwoJCWdldDEgPSBnZXQoMiAqIGlkLCBsLCBtLCB1LCB2KTsKCQlnZXQyID0gZ2V0KDIgKiBpZCArIDEsIG0gKyAxLCByICwgdSwgdik7Cgl9CglyZXR1cm4gbWF4KGdldDEsIGdldDIpOwp9CnZvaWQgc29sdmUoKXsKLy8JYnVpbGQoMSwgMSwgbik7CiAgICBpbnQgbSA9IHYuc2l6ZSgpOwogICAgaW50IGFucyA9IDA7CiAgICBpbnQga3EgPSAwOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGludCBwb3MgPSBsYihhbGwodiksIGFbaV0pIC0gdi5iZWdpbigpICsgMTsKICAgICAgICBpbnQgbXggPSAwOwogICAgICAgIGlmKHBvcyA+IDEpIG14ID0gZ2V0KDEsIDEsIG0sIDEsIHBvcyAtIDEpOwogICAgICAgIGludCBkcCA9IG14ICsgMTsKICAgICAgICBpZihhbnMgPiBkcCkga3E9MTsKICAgICAgICBlbHNlIGlmKGFucyA9PSBkcCkga3ErKzsKICAgICAgICBhbnMgPSBtYXgoYW5zLCBkcCk7CiAgICAgICAgdXBkYXRlKDEsIDEsIG0sIHBvcywgZHApOwoJfQoJY291dCA8PCBrcSA8PCBubjsKfQpzaWduZWQgbWFpbigpIHsKCS8vIGZyZW9wZW4oInBpZ2d5YmFjay5pbiIsICJyIiwgc3RkaW4pOwoJLy8gZnJlb3BlbigicGlnZ3liYWNrLm91dCIsICJ3Iiwgc3Rkb3V0KTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CiAgICBuaGFwKCk7CiAgICBzb2x2ZSgpOwoJcmV0dXJuIDA7Cgp9Cg==