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 java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;

import sun.security.provider.certpath.OCSP.RevocationStatus;

public class D
{
	String line;
	StringTokenizer inputParser;
	BufferedReader is;
	FileInputStream fstream;
	DataInputStream in;
	
	void openInput(String file)
	{

		if(file==null)is = new BufferedReader(new InputStreamReader(System.in));//stdin
		else
		{
			try{
		
				
			fstream = new FileInputStream(file);
			in = new DataInputStream(fstream);
			is = new BufferedReader(new InputStreamReader(in));
			}catch(Exception e)
			{
				System.err.println(e);
			}
		}

	}
	
	void readNextLine()
	{
		try {
			line = is.readLine();
			if(line!=null)inputParser = new StringTokenizer(line, " ");
			//System.err.println("Input: " + line);
		} catch (IOException e) {
			System.err.println("Unexpected IO ERROR: " + e);
		}	
		
	}
	
	int NextInt()
	{
		String n = inputParser.nextToken();
		int val = Integer.parseInt(n);
		
		//System.out.println("I read this number: " + val);
		return val;
	}
	
	long NextLong()
    {
            String n = inputParser.nextToken();
            
            long val = Long.parseLong(n);
            
            return val;
    }
	
	String NextString()
	{
		String n = inputParser.nextToken();
		return n;
	}
	
	void closeInput()
	{
		try {
			is.close();
		} catch (IOException e) {
			System.err.println("Unexpected IO ERROR: " + e);
		}
			
	}
	
	
	public static void main(String [] argv)
	{
		String filePath=null;
		if(argv.length>0)filePath=argv[0];
		new D(filePath);
	}

	public D(String inputFile)
	{
		openInput(inputFile);
		//readNextLine();
		int T=1;//NextInt();
		StringBuilder sb = new StringBuilder();
		for(int t=1; t<=T; t++)
		{
			readNextLine();
			int N=NextInt();
			int K=NextInt();
			readNextLine();
			Integer [] a = new Integer[N];
			int [] cnt=new int[301];
			for(int i=0; i<N; i++)
			{
				a[i] = NextInt();
				cnt[a[i]]++;
			}
			Arrays.sort(cnt);
			int x=cnt[cnt.length-1];
			
			
			int M=Math.min(200*N, K*N);
			int rest=Math.max(0, K-200);
			long ret=x*rest;
			int [] [] dp = new int[M+1][301];
			for(int i=0; i<M; i++)
			{
				for(int j=0; j<301; j++)
					dp[i+1][j]=dp[i][j];
				for(int j=0; j<=a[i%N]; j++)
					dp[i+1][a[i%N]]=Math.max(dp[i+1][a[i%N]], dp[i][j]+1);
				
			}
			int r2=0;
			for(int j=0; j<301; j++)
				r2=Math.max(r2, dp[M][j]);
			ret+=r2;
			sb.append(ret);
		}
		System.out.print(sb);
		
		closeInput();		
	}

}