简单排序
题号:NC23654
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

LXK有一个序列,从N~1,但是他不小心把序列打乱了,现在他想找你把这串序列复原。
他讨厌用传统的方式排序。所以他用他自己的方式进行复原。
他有K个先进先出的队列
对于某个数字,你可以选择将其放入任意队列之中(不能不放)。
每个队列中队首的数字可以在任意时间出队列。
利用这些队列,聪明的LXK就可以将序列复原回降序。
他想知道这些操作最少需要准备多少个队列?    

输入描述:

一个数N(N<100000)

表示数字的数目

接下来一行 n个数字

输出描述:

一个数k

表示最少需要多少个队列才能满足要求
示例1

输入

复制
5
1 2 3 4 5

输出

复制
5
示例2

输入

复制
7
1 2 5 7 3 4 6

输出

复制
5