You are given an array of positive integers a1, a2, ..., an × T of length n × T. We know that for any i > n it is true that ai = ai - n. Find the length of the longest non-decreasing sequence of the given array.

Input

The first line contains two space-separated integers: n, T (1 ≤ n ≤ 100, 1 ≤ T ≤ 107). The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 300).

Output

Print a single number — the length of a sought sequence.

Examples

Input

4 3
3 1 4 2


Output

5

Note

The array given in the sample looks like that: 3, 1, 4, 2, 3, 1, 4, 2, 3, 1, 4, 2. The elements in bold form the largest non-decreasing subsequence. 
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N];
int n, t, ans, cnt;
int c[N], f[N], g[N], num[N];
int query(int x) {
  int ret = 0;
  for (; x; x -= x & -x) ret = max(ret, c[x]);
  return ret;
}
void update(int x, int val) {
  for (; x <= 300; x += x & -x) c[x] = max(c[x], val);
}
void solve1() {
  for (int j(0); j <= (t - 1); ++j)
    for (int i(1); i <= (n); ++i) b[j * n + i] = a[i];
  n *= t;
  for (int i(1); i <= (n); ++i) {
    f[i] = query(b[i]) + 1;
    update(b[i], f[i]);
  }
  int ret = 0;
  for (int i(1); i <= (n); ++i) ret = max(ret, f[i]);
  printf("%d\n", ret);
}
void solve2() {
  for (int j(0); j <= (n - 1); ++j)
    for (int i(1); i <= (n); ++i) b[j * n + i] = a[i];
  int m = n;
  n *= n;
  for (int i(1); i <= (n); ++i) {
    f[i] = query(b[i]) + 1;
    update(b[i], f[i]);
  }
  int ret = 0;
  for (int i(1); i <= (n); ++i) ret = max(ret, f[i]);
  for (int i(1); i <= (n); ++i) ++num[a[i]];
  for (int i(1); i <= (300); ++i) cnt = max(cnt, num[i]);
  printf("%d\n", ret + (t - m) * cnt);
}
int main() {
  scanf("%d%d", &n, &t);
  for (int i(1); i <= (n); ++i) scanf("%d", a + i);
  if (t <= n)
    solve1();
  else
    solve2();
  return 0;
}
