import sys from collections import defaultdict, Counter, deque from itertools import permutations, combinations, product, combinations_with_replacement, groupby, accumulate import operator from math import sqrt, gcd, factorial #from math import isqrt, prod,comb # python3.8用(notpypy) from bisect import bisect_left,bisect_right #from functools import lru_cache,reduce #from heapq import heappush,heappop,heapify,heappushpop,heapreplace #import numpy as np #import networkx as nx #from networkx.utils import UnionFind #from numba import njit, b1, i1, i4, i8, f8 #from scipy.sparse import csr_matrix #from scipy.sparse.csgraph import shortest_path, floyd_warshall, dijkstra, bellman_ford, johnson, NegativeCycleError #numba例 @njit(i1(i4[:], i8[:, :]),cache=True) 引数i4配列、i8 2次元配列,戻り値i1 def input(): return sys.stdin.readline().rstrip() def divceil(n, k): return 1+(n-1)//k # n/kの切り上げを返す def yn(hantei, yes='Yes', no='No'): print(yes if hantei else no) def rankdata(arr):#座標圧縮 unique=list(set(arr)) unique.sort() rank={e: i for i, e in enumerate(unique)} return [rank[i] for i in arr] def main(): mod = 10**9+7 mod2 = 998244353 n=int(input()) A=list(map(int, input().split())) A=rankdata(A) dic=defaultdict(list) for i in range(n): dic[A[i]].append(i) ans=0 count=1 hantei=n suimen=0 for i in range(max(A)+1)[::-1]: tmp=dic[i] bis=bisect_left(tmp, hantei) #n未満の個数を数える tmp=tmp[bis:]+tmp[:bis] #print(i,tmp) for tmps in tmp[::-1]: if n-count==tmps: count+=1 ans+=1 #print(tmps,hantei,count) if tmps==hantei-1 or (hantei==suimen and tmps==n-count+1): ans-=1 if hantei==suimen: suimen+=1 hantei=tmps print(ans) if __name__ == '__main__': main()