For this Question: Blue Ranger hates palindromic strings and he is also jealous of Red Ranger. So to test Red Ranger he gives him a task. Given N and M, Red Ranger must find a string of length N and containing at max M distinct english alphabets such that the string contains minimum substrings that are palindromes. As there can be many such strings Blue Ranger asks him to simply tell the minimum possible number of substrings in the optimal string that are palindromes. 
Palindrome is a string that can be read in the same way in both left-to-right and right-to-left directions.Input contains two integers N and M.

Constraints:
1 <= N <= 100000
1 <= M <= 100Print a single integer that is the minimum possible number of substrings in the optimal string that are palindromes.Sample Input 1
3 15

Sample Output 1
3

Explanation: optimal string can be "abc" which has three substrings that are palindromes.

Sample Input 2
3 1

Sample Output 2
6

Explanation: optimal string can be "aaa" which has 6 substrings that are pallindromes., I have written this Solution Code: 
import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args)throws Exception{ new Main().run();}
	long mod=1000000000+7;

	void solve() throws Exception
	{
		long N=nl();
		long M=nl();
		if(N==1)
		{
			out.println("1");
		}
		else if(M==1)
		{
			long sum=(N*(N+1))/2;
			out.println(sum);
		}
		else if(M==2)
		{
			out.println((N-1)*2);
		}
		else
		{
			out.println(N);
		}
	}




	private byte[] buf=new byte[1024];
	private int index;
	private InputStream in;
	private int total;
	private SpaceCharFilter filter;
	PrintWriter out;

	int min(int... ar){int min=Integer.MAX_VALUE;for(int i:ar)min=Math.min(min, i);return min;}
	long min(long... ar){long min=Long.MAX_VALUE;for(long i:ar)min=Math.min(min, i);return min;}
	int max(int... ar) {int max=Integer.MIN_VALUE;for(int i:ar)max=Math.max(max, i);return max;}
	long max(long... ar) {long max=Long.MIN_VALUE;for(long i:ar)max=Math.max(max, i);return max;}
	void reverse(int a[]){for(int i=0;i<a.length>>1;i++){int tem=a[i];a[i]=a[a.length-1-i];a[a.length-1-i]=tem;}}
	void reverse(long a[]){for(int i=0;i<a.length>>1;i++){long tem=a[i];a[i]=a[a.length-1-i];a[a.length-1-i]=tem;}}
	String reverse(String s){StringBuilder sb=new StringBuilder(s);sb.reverse();return sb.toString();}

	void shuffle(int a[]) {
		ArrayList<Integer> al = new ArrayList<>();
		for(int i=0;i<a.length;i++)
			al.add(a[i]);

		Collections.sort(al);
		for(int i=0;i<a.length;i++)
			a[i]=al.get(i);
	}
	long lcm(long a,long b)
	{
		return (a*b)/(gcd(a,b));
	}

	int gcd(int a, int b)
	{
		if (a == 0)
			return b;
		return gcd(b%a, a);
	}
	long gcd(long a, long b)
	{
		if (a == 0)
			return b;
		return gcd(b%a, a);
	}

	long expo(long p,long q)
	{
		long z = 1;
		while (q>0) {
			if (q%2 == 1) {
				z = (z * p)%mod;
			}
			p = (p*p)%mod;
			q >>= 1;
		}
		return z;
	}
	void run()throws Exception
	{
		in=System.in; out = new PrintWriter(System.out);
		solve();
		out.flush();
	}
	private int scan()throws IOException
	{
		if(total<0)
			throw new InputMismatchException();
		if(index>=total)
		{
			index=0;
			total=in.read(buf);
			if(total<=0)
				return -1;
		}
		return buf[index++];
	}
	private int ni() throws IOException
	{
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		int sgn = 1;
		if (c == '-') {
			sgn = -1;
			c = scan();
		}
		int res = 0;
		do {
			if (c < '0' || c > '9')
				throw new InputMismatchException();
			res *= 10;
			res += c - '0';
			c = scan();
		} while (!isSpaceChar(c));
		return res * sgn;
	}
	private long nl() throws IOException
	{
		long num = 0;
		int b;
		boolean minus = false;
		while ((b = scan()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
			;
		if (b == '-') {
			minus = true;
			b = scan();
		}

		while (true) {
			if (b >= '0' && b <= '9') {
				num = num * 10 + (b - '0');
			} else {
				return minus ? -num : num;
			}
			b = scan();
		}
	}
	private double nd() throws IOException{
		return Double.parseDouble(ns());
	}
	private String ns() throws IOException {
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		StringBuilder res = new StringBuilder();
		do {
			if (Character.isValidCodePoint(c))
				res.appendCodePoint(c);
			c = scan();
		} while (!isSpaceChar(c));
		return res.toString();
	}
	private String nss() throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		return br.readLine();
	}
	private char nc() throws IOException
	{
		int c = scan();
		while (isSpaceChar(c))
			c = scan();
		return (char) c;
	}
	private boolean isWhiteSpace(int n)
	{
		if(n==' '||n=='\n'||n=='\r'||n=='\t'||n==-1)
			return true;
		return false;
	}
	private boolean isSpaceChar(int c) {
		if (filter != null)
			return filter.isSpaceChar(c);
		return isWhiteSpace(c);
	}
	private interface SpaceCharFilter {
		public boolean isSpaceChar(int ch);
	}
}, In this Programming Language: Java, Now tell me if this Code is compilable or not?