#abc262g. [abc262_g]LIS with Stack

[abc262_g]LIS with Stack

問題文

空の列 XX と空のスタック SS があります。また、項数が NN の整数列 A=(a1,ldots,aN)A=(a_1,\\ldots,a_N) が与えられます。
高橋君は i=1,ldots,Ni=1,\\ldots,N の順に、以下の 22 つの操作のうち一方を行います。

  • AA の先頭の整数 aia_iSS の先頭に移動させる。
  • AA の先頭の整数 aia_i を捨てる。

また、高橋君は SS が空でない任意のタイミングで次の操作をすることが出来ます。

  • SS の先頭の整数を XX の末尾に移動させる。

最終的な XX に対し、スコアを以下のように定めます。

  • XX が広義単調増加な場合、すなわち X=(x1,ldots,xX)X=(x_1,\\ldots,x_{|X|}) とした時に任意の整数 i(1leqiltX)i(1 \\leq i \\lt |X|) に対して xileqxi+1x_i \\leq x_{i+1} が成り立つ場合、スコアは X|X| である。(X|X|XX の項数)
  • XX が広義単調増加でない場合、スコアは 00 である。

スコアの最大値を求めてください。

制約

  • 1leqNleq501 \\leq N \\leq 50
  • 1leqaileq501 \\leq a_i \\leq 50
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN a1a_1 ldots\\ldots aNa_N

出力

答えを出力せよ。


入力例 1

7
1 2 3 4 1 2 3

出力例 1

5

以下のように操作をすると最終的な XX(1,1,2,3,4)(1,1,2,3,4) となり、スコアが 55 になります。

  • a1=1a_1=1SS の先頭に移動させる。
  • SS の先頭の 11XX の末尾に移動させる。
  • a2=2a_2=2SS の先頭に移動させる。
  • a3=3a_3=3 を捨てる。
  • a4=4a_4=4SS の先頭に移動させる。
  • a5=1a_5=1SS の先頭に移動させる。
  • SS の先頭の 11XX の末尾に移動させる。
  • a6=2a_6=2SS の先頭に移動させる。
  • SS の先頭の 22XX の末尾に移動させる。
  • a7=3a_7=3SS の先頭に移動させる。
  • SS の先頭の 33XX の末尾に移動させる。
  • SS の先頭の 44XX の末尾に移動させる。

また、スコアを 66 以上にすることは出来ません。よってスコアの最大値は 55 です。


入力例 2

10
1 1 1 1 1 1 1 1 1 1

出力例 2

10