#include <bits/stdc++.h>
using namespace std;
int dpL[105];
int dpR[105];
int cntarr[105];
int main() {
  int n, T;
  scanf("%d%d", &n, &T);
  vector<int> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  vector<int> a2 = a;
  sort(a2.begin(), a2.end());
  a2.erase(unique(a2.begin(), a2.end()), a2.end());
  for (int& x : a) x = lower_bound(a2.begin(), a2.end(), x) - a2.begin();
  memset(cntarr, 0, sizeof cntarr);
  for (int x : a) cntarr[x]++;
  memset(dpL, 0, sizeof dpL);
  memset(dpR, 0, sizeof dpR);
  if (T <= 200) {
    for (int it = 0; it < n * T; it++) {
      int x = a[it % n];
      dpL[x] = *max_element(dpL, dpL + x + 1) + 1;
    }
    printf("%d\n", *max_element(dpL, dpL + 105));
  } else {
    for (int it = 0; it < n * 100; it++) {
      int x = a[it % n];
      dpL[x] = *max_element(dpL, dpL + x + 1) + 1;
    }
    for (int it = 0; it < n * 100; it++) {
      int x = a[n - 1 - (it % n)];
      dpR[x] = *max_element(dpR + x, dpR + 100) + 1;
    }
    int answer = 0;
    for (int v = 0; v <= 100; v++)
      answer = max(answer, dpL[v] + dpR[v] + (T - 200) * cntarr[v]);
    printf("%d\n", answer);
  }
}
