#include <bits/stdc++.h>
using namespace std;
int a[300005];
int num[305];
int bsearch(int c[], int n, int a) {
  int l = 1, r = n;
  while (l <= r) {
    int mid = (l + r) / 2;
    if (a >= c[mid] && a < c[mid + 1])
      return mid + 1;
    else if (a < c[mid])
      r = mid - 1;
    else
      l = mid + 1;
  }
}
int LIS(int a[], int n) {
  int size = 1;
  int *c = new int[n + 1];
  int *dp = new int[n + 1];
  c[1] = a[1];
  dp[1] = 1;
  int j;
  for (int i = 2; i <= n; ++i) {
    if (a[i] < c[1])
      j = 1;
    else if (a[i] >= c[size])
      j = ++size;
    else
      j = bsearch(c, size, a[i]);
    c[j] = a[i];
    dp[i] = j;
  }
  return size;
}
int main() {
  int n, T;
  scanf("%d%d", &n, &T);
  memset(num, 0, sizeof(num));
  int maxn = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    num[a[i]]++;
    maxn = max(num[a[i]], maxn);
  }
  for (int i = 1; i < min(T, 2000); i++)
    for (int j = 1; j <= n; j++) a[n * i + j] = a[j];
  if (T - 2000 <= 0)
    printf("%d\n", LIS(a, n * T));
  else
    printf("%d\n", LIS(a, n * 2000) + (T - 2000) * maxn);
  return 0;
}
