Longest Subsequence
题号:NC311849
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯有一个长度为 n 的序列 a_1, a_2, \dots, a_n,他想从中选出一个子序列(不一定连续),使得选出的子序列中任意相邻两个元素的差的绝对值恰好为 1。例如,\{3,4,5\}\{7,6,5\} 都是合法的,但 \{2,4,5\} 不合法(因为 24 的差的绝对值不是 1)。
\hspace{15pt}小苯想知道,最多能选出多少个元素组成这样的子序列?

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行一个整数 n\left(1 \leqq n \leqq 2 \times 10^5 \right),表示序列的长度。
\hspace{15pt}第二行 n 个整数 a_1, a_2, \dots, a_n\left(1 \leqq a_i \leqq n\right),表示序列中的元素。

\hspace{15pt}除此之外,保证所有测试数据的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组数据,新起一行输出一个整数,表示最多能选出的元素个数。
示例1

输入

复制
3
6
1 2 3 2 4 5
5
1 2 1 1 1
7
4 5 4 3 2 1 2

输出

复制
5
3
7

说明

\hspace{15pt}对于第一组测试数据,可以选择 \{1,2,3,4,5\}

\hspace{15pt}对于第二组测试数据,可以选择 \{1,2,1\}