题目描述
Marton 的朋友 Cero 有一个由N个正整数组成的数组。
首先 Cero 会在黑板上写下这个数组中的第一个数字。接下来他会在之前写的某一个数字的左边或者右边写下一个数字。重复以上操作得到一个序列。
请注意,根据上述方法构造出的两个序列相同当且仅当每一个数字写下的顺序完全相同。例如,1,1可能和1,1不同,前者的第二个数在第一个数的左边,后者的第二个数在第一个数的右边。
求这些数组成的所有排列中,最长的严格递增子序列长度和此长度下的不同子序列个数。考虑到不同子序列个数很大,Marton 只想知道这个数对109+7取模的值。
输入输出格式
输入格式
第一行包含一个正整数N。
接下来的一行包含N个正整数,表示按顺序给出的这个数组的各个元素。
输出格式
仅一行,输出这个最长的子序列长度以及总个数模上109+7的值。
输入输出样例
输入样例 #1
2
1 1
输出样例 #1
1 4
输入样例 #2
4
2 1 3 4
输出样例 #2
4 1
说明/提示
样例解释
样例 1 解释
Cero 可以构造2个不同的序列,1,1和1,1。
显然最长的严格上升子序列长度为1,有4个子序列满足。
样例 2 解释
Cero 可以构造出8个不同的序列。最长的严格上升子序列长度为4,只有1,2,3,4满足。
数据规模与约定
对于30%的数据,满足N≤20。
对于50%的数据,满足N≤103。
对于100%的数据,满足N≤2×105,数组中的每个元素≤109。