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;
int n, t;
int a[105];
long long int lis[105][105];
long long int ans[105][105];
long long int r[105][105];
void mul(long long int a[][105], long long int b[][105],
         long long int c[][105]) {
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      c[i][j] = INT_MIN;
      for (int k = 0; k < n; ++k) {
        c[i][j] = max(c[i][j], a[i][k] + b[k][j]);
      }
    }
  }
}
void expPow(int b) {
  while (b) {
    if (b % 2 == 1) {
      mul(ans, lis, r);
      for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
          ans[i][j] = r[i][j];
        }
      }
    }
    mul(lis, lis, r);
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        lis[i][j] = r[i][j];
      }
    }
    b /= 2;
  }
}
int main() {
  scanf("%d%d", &n, &t);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      if (a[i] > a[j])
        lis[i][j] = INT_MIN;
      else {
        lis[i][j] = 1;
        for (int k = 0; k < j; ++k) {
          if (a[k] <= a[j]) lis[i][j] = max(lis[i][j], 1 + lis[i][k]);
        }
      }
    }
  }
  expPow(t);
  long long int maxLis = 0;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      maxLis = max(maxLis, ans[i][j]);
    }
  }
  cout << maxLis << endl;
  return 0;
}
