import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    }
    //        int n = ins[0]; int m = ins[1]; int q = ins[2];
//        int [][]table = new int[n][n];
//
//        int [][]tuples = new int[q][];
//        for (int i = 0 ; i< q; i++){
//            tuples[i] = GetInput.getArrayInt();
//            if (table[tuples[i][0]][tuples[i][1]] < tuples[i][3]){
//                table[tuples[i][0]][tuples[i][1]] = tuples[i][3];
//            }
//        }
//        for (int i = 0 ; i < n; i++){
//            for (int j = 0; j < n; j++){
//
//            }
//        }

//    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    }

    private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    }

    private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    }

}


class GetInput {
    static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    static char[] getCharArray() {
        char[] charArray;
        try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        }
        charArray = new char[0];
        return charArray;
    }

    static int[] getArrayInt() {
        String[] string;
        int[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        int[] arra = new int[2];
        return arra;
    }

    static int getInt() {
        try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static StringBuilder getInputString() {
        try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StringBuilder();
    }

    static long getLongInput() {
        try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static long[] getLongArrayInput() {
        String[] string;
        long[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        long[] arra = new long[2];
        return arra;
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.math.BigInteger; BigInteger java.math import java.util.*; util.* java public class Main {

    public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    }
    //        int n = ins[0]; int m = ins[1]; int q = ins[2];
//        int [][]table = new int[n][n];
//
//        int [][]tuples = new int[q][];
//        for (int i = 0 ; i< q; i++){
//            tuples[i] = GetInput.getArrayInt();
//            if (table[tuples[i][0]][tuples[i][1]] < tuples[i][3]){
//                table[tuples[i][0]][tuples[i][1]] = tuples[i][3];
//            }
//        }
//        for (int i = 0 ; i < n; i++){
//            for (int j = 0; j < n; j++){
//
//            }
//        }

//    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    }

    private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    }

    private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    }

} Main public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    } main {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    } int []ins = GetInput.getArrayInt(); ins GetInput.getArrayInt() GetInput.getArrayInt GetInput System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2) System.out.println System.out System System.out (ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2 (ins[0]*(ins[0]-1))/2 (ins[0]*(ins[0]-1)) ins[0] ins 0 (ins[0]-1) ins[0] ins 0 1 2 (ins[1]*(ins[1]-1))/2 (ins[1]*(ins[1]-1)) ins[1] ins 1 (ins[1]-1) ins[1] ins 1 1 2 String[] args args //    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    } isBeut {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    } int max = Integer.MIN_VALUE; max Integer.MIN_VALUE Integer Integer.MIN_VALUE int min = Integer.MAX_VALUE; min Integer.MAX_VALUE Integer Integer.MAX_VALUE int distinct = 0; distinct 0 Set<Integer> set = new HashSet<>(); set new HashSet<>() for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        } int i = 0; int i = 0; i 0 i < arrau.length i arrau.length arrau arrau.length i++ i++ i {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        } {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        } if (arrau[i] > max) {
                max = arrau[i];
            } arrau[i] > max arrau[i] arrau i max {
                max = arrau[i];
            } max = arrau[i] max arrau[i] arrau i if (arrau[i] < min) {
                min = arrau[i];
            } arrau[i] < min arrau[i] arrau i min {
                min = arrau[i];
            } min = arrau[i] min arrau[i] arrau i if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            } !set.contains(arrau[i]) set.contains(arrau[i]) set.contains set arrau[i] arrau i {
                distinct++;
                set.add(arrau[i]);
            } distinct++ distinct set.add(arrau[i]) set.add set arrau[i] arrau i return set; set int[] arrau arrau int k k private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    } sumUpto {
        return (long) (Math.pow(2, n + 1) - 2);
    } return (long) (Math.pow(2, n + 1) - 2); (long) (Math.pow(2, n + 1) - 2) Math.pow(2, n + 1) Math.pow Math 2 n + 1 n 1 2 int n n private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    } mod {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    } if (position - position1 > 0) {
            return position - position1;
        } position - position1 > 0 position - position1 position position1 0 {
            return position - position1;
        } return position - position1; position - position1 position position1 return position1 - position; position1 - position position1 position long position position long position1 position1 class GetInput {
    static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    static char[] getCharArray() {
        char[] charArray;
        try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        }
        charArray = new char[0];
        return charArray;
    }

    static int[] getArrayInt() {
        String[] string;
        int[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        int[] arra = new int[2];
        return arra;
    }

    static int getInt() {
        try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static StringBuilder getInputString() {
        try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StringBuilder();
    }

    static long getLongInput() {
        try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static long[] getLongArrayInput() {
        String[] string;
        long[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        long[] arra = new long[2];
        return arra;
    }
} GetInput static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); bufferedReader new BufferedReader(new InputStreamReader(System.in)) static char[] getCharArray() {
        char[] charArray;
        try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        }
        charArray = new char[0];
        return charArray;
    } getCharArray {
        char[] charArray;
        try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        }
        charArray = new char[0];
        return charArray;
    } char[] charArray; charArray try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } Exception e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } StringBuilder string = getInputString(); string getInputString() getInputString charArray = new char[string.length()] charArray new char[string.length()] string.length() string.length string for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            } int i = 0; int i = 0; i 0 i < string.length() i string.length() string.length string i++ i++ i {
                charArray[i] = string.charAt(i);
            } {
                charArray[i] = string.charAt(i);
            } charArray[i] = string.charAt(i) charArray[i] charArray i string.charAt(i) string.charAt string i return charArray; charArray charArray = new char[0] charArray new char[0] 0 return charArray; charArray static int[] getArrayInt() {
        String[] string;
        int[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        int[] arra = new int[2];
        return arra;
    } getArrayInt {
        String[] string;
        int[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        int[] arra = new int[2];
        return arra;
    } String[] string; string int[] array; array try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } string = bufferedReader.readLine().split("\\s+") string bufferedReader.readLine().split("\\s+") bufferedReader.readLine().split bufferedReader.readLine() bufferedReader.readLine bufferedReader "\\s+" array = new int[string.length] array new int[string.length] string.length string string.length for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            } int i = 0; int i = 0; i 0 i < string.length i string.length string string.length i++ i++ i {
                array[i] = Integer.parseInt(string[i]);
            } {
                array[i] = Integer.parseInt(string[i]);
            } array[i] = Integer.parseInt(string[i]) array[i] array i Integer.parseInt(string[i]) Integer.parseInt Integer string[i] string i return array; array int[] arra = new int[2]; arra new int[2] 2 return arra; arra static int getInt() {
        try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    } getInt {
        try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    } try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } String string = bufferedReader.readLine(); string bufferedReader.readLine() bufferedReader.readLine bufferedReader return Integer.parseInt(string); Integer.parseInt(string) Integer.parseInt Integer string return 0; 0 static StringBuilder getInputString() {
        try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StringBuilder();
    } getInputString {
        try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StringBuilder();
    } try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } StringBuilder string = new StringBuilder(); string new StringBuilder() string.append(bufferedReader.readLine()) string.append string bufferedReader.readLine() bufferedReader.readLine bufferedReader return string; string return new StringBuilder(); new StringBuilder() static long getLongInput() {
        try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    } getLongInput {
        try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    } try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } String string = bufferedReader.readLine(); string bufferedReader.readLine() bufferedReader.readLine bufferedReader return Long.parseLong(string); Long.parseLong(string) Long.parseLong Long string return 0; 0 static long[] getLongArrayInput() {
        String[] string;
        long[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        long[] arra = new long[2];
        return arra;
    } getLongArrayInput {
        String[] string;
        long[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        long[] arra = new long[2];
        return arra;
    } String[] string; string long[] array; array try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } IOException e {
            e.printStackTrace();
        } e.printStackTrace() e.printStackTrace e {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } string = bufferedReader.readLine().split("\\s+") string bufferedReader.readLine().split("\\s+") bufferedReader.readLine().split bufferedReader.readLine() bufferedReader.readLine bufferedReader "\\s+" array = new long[string.length] array new long[string.length] string.length string string.length for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            } int i = 0; int i = 0; i 0 i < string.length i string.length string string.length i++ i++ i {
                array[i] = Long.parseLong(string[i]);
            } {
                array[i] = Long.parseLong(string[i]);
            } array[i] = Long.parseLong(string[i]) array[i] array i Long.parseLong(string[i]) Long.parseLong Long string[i] string i return array; array long[] arra = new long[2]; arra new long[2] 2 return arra; arra public class Main {

    public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    }
    //        int n = ins[0]; int m = ins[1]; int q = ins[2];
//        int [][]table = new int[n][n];
//
//        int [][]tuples = new int[q][];
//        for (int i = 0 ; i< q; i++){
//            tuples[i] = GetInput.getArrayInt();
//            if (table[tuples[i][0]][tuples[i][1]] < tuples[i][3]){
//                table[tuples[i][0]][tuples[i][1]] = tuples[i][3];
//            }
//        }
//        for (int i = 0 ; i < n; i++){
//            for (int j = 0; j < n; j++){
//
//            }
//        }

//    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    }

    private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    }

    private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    }

} public class Main {

    public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    }
    //        int n = ins[0]; int m = ins[1]; int q = ins[2];
//        int [][]table = new int[n][n];
//
//        int [][]tuples = new int[q][];
//        for (int i = 0 ; i< q; i++){
//            tuples[i] = GetInput.getArrayInt();
//            if (table[tuples[i][0]][tuples[i][1]] < tuples[i][3]){
//                table[tuples[i][0]][tuples[i][1]] = tuples[i][3];
//            }
//        }
//        for (int i = 0 ; i < n; i++){
//            for (int j = 0; j < n; j++){
//
//            }
//        }

//    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    }

    private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    }

    private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    }

} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        int []ins = GetInput.getArrayInt();
        System.out.println((ins[0]*(ins[0]-1))/2 +(ins[1]*(ins[1]-1))/2);
    }
    //        int n = ins[0]; int m = ins[1]; int q = ins[2];
//        int [][]table = new int[n][n];
//
//        int [][]tuples = new int[q][];
//        for (int i = 0 ; i< q; i++){
//            tuples[i] = GetInput.getArrayInt();
//            if (table[tuples[i][0]][tuples[i][1]] < tuples[i][3]){
//                table[tuples[i][0]][tuples[i][1]] = tuples[i][3];
//            }
//        }
//        for (int i = 0 ; i < n; i++){
//            for (int j = 0; j < n; j++){
//
//            }
//        }

//    int n = GetInput.getInt();
    //        int []heigts = GetInput.getArrayInt();
//
////        int sum = 0;
////        for (int i = 0; i < n; i++){
////            for (int j = i; j < n; j++){
////                if (j-i == heigts[i] + heigts[j]){
////                    sum++;
////                }
////            }
////        }
////        System.out.println(sum);
    private static Set<Integer> isBeut(int[] arrau, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int distinct = 0;
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arrau.length; i++) {
            if (arrau[i] > max) {
                max = arrau[i];
            }
            if (arrau[i] < min) {
                min = arrau[i];
            }

            if (!set.contains(arrau[i])) {
                distinct++;
                set.add(arrau[i]);
            }
        }
        return set;

    }

    private static long sumUpto(int n) {
        return (long) (Math.pow(2, n + 1) - 2);
    }

    private static long mod(long position, long position1) {
        if (position - position1 > 0) {
            return position - position1;
        }
        return position1 - position;
    }

}


class GetInput {
    static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    static char[] getCharArray() {
        char[] charArray;
        try {
            StringBuilder string = getInputString();
            charArray = new char[string.length()];
            for (int i = 0; i < string.length(); i++) {
                charArray[i] = string.charAt(i);
            }
            return charArray;
        } catch (Exception e) {
            e.printStackTrace();
        }
        charArray = new char[0];
        return charArray;
    }

    static int[] getArrayInt() {
        String[] string;
        int[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new int[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Integer.parseInt(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        int[] arra = new int[2];
        return arra;
    }

    static int getInt() {
        try {
            String string = bufferedReader.readLine();
            return Integer.parseInt(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static StringBuilder getInputString() {
        try {
            StringBuilder string = new StringBuilder();
            string.append(bufferedReader.readLine());
            return string;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StringBuilder();
    }

    static long getLongInput() {
        try {
            String string = bufferedReader.readLine();
            return Long.parseLong(string);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 0;
    }

    static long[] getLongArrayInput() {
        String[] string;
        long[] array;
        try {
            string = bufferedReader.readLine().split("\\s+");
            array = new long[string.length];
            for (int i = 0; i < string.length; i++) {
                array[i] = Long.parseLong(string[i]);
            }
            return array;
        } catch (IOException e) {
            e.printStackTrace();
        }

        long[] arra = new long[2];
        return arra;
    }
}
