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. 
import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192
class FastIO(IOBase):
    newlines = 0
    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()
    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)
class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
#'%.9f'%ans
##########################################################
for _ in range(1):
    #n = int(input())
    n,m = map(int, input().split())
    #g=[[] for i in range(n+1)]
    arr = list(list(map(int, input().split())))
    if m>2*n:
        dp = [0] * 303

        dp1 = [0] * 303
        d = {}

        for i in range(n):
            d[arr[i]] = d.get(arr[i], 0) + 1

            for j in range(n):
                dp[arr[j]] = max(dp[arr[j]] + 1, max(dp[:arr[j]]) + 1)
        for i in range(n):

            for j in range(n - 1, -1, -1):
                dp1[arr[j]] = max(dp1[arr[j]] + 1, max(dp1[arr[j] + 1:]) + 1)

        ans=0
        for i in range(n):
            for j in range(n):
                if arr[j]<arr[i]:
                    continue
                ans=max(ans,dp[arr[i]]+dp1[arr[j]]+(m-2*n)*d[arr[i]])
        print(ans)
        #print(d[42])
    else:
        dp=[0]*303

        for i in range(m):
            for j in range(n):
                dp[arr[j]] = max(dp[arr[j]] + 1, max(dp[:arr[j]]) + 1)

        print(max(dp))





