A soldier wants to buy w bananas in the shop. He has to pay k dollars for the first banana, 2k dollars for the second one and so on (in other words, he has to pay i·k dollars for the i-th banana). 

He has n dollars. How many dollars does he have to borrow from his friend soldier to buy w bananas?

Input

The first line contains three positive integers k, n, w (1 ≤ k, w ≤ 1000, 0 ≤ n ≤ 109), the cost of the first banana, initial number of dollars the soldier has and number of bananas he wants. 

Output

Output one integer — the amount of dollars that the soldier must borrow from his friend. If he doesn't have to borrow money, output 0.

Examples

Input

3 17 4


Output

13
import java.io.*;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * Created by Алексей on 07/20/2016.
 */
public class IDontKnow {
    public static void main(String [] args){
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Integer readFromFile=new Integer(1);
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskD solver = new TaskD();
        solver.solve(1, in, out);
        out.close();
    }
    static class TaskD {

        private int myPow(int x, int y){
            int result = 1;
            for(int i=0; i<y; i++){
                result*=x;
            }
            return result;
        }


        private void allLuckyNumber(List<Integer> lucky){
            int multi = 10;
            lucky.add(4);
            lucky.add(7);
            for(int i=0, pow1=1, maxPow = 4; i<7; pow1++, i++){
                if(pow1<=maxPow/2){
                    lucky.add(lucky.get(i)+(multi*4));
                    if(pow1==maxPow/2){
                        i-=maxPow/2;
                    }
                }else{
                    lucky.add(lucky.get(i)+(multi*7));
                    if(pow1==maxPow){
                        maxPow*=2;
                        pow1 = 0;
                        multi*=10;
                    }
                }
            }
        }

        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int k = in.nextInt();
            int n = in.nextInt();
            int w = in.nextInt();
            int allsum = k*w*(w+1)/2;
            if(allsum>n){
                out.println(allsum-n);
            }else{
                out.println(0);
            }
        }
    }
    static class InputReader {
        BufferedReader br;
        StringTokenizer st;
        File file = new File("text.txt");
        public InputReader(InputStream in) {
            br = new BufferedReader(new InputStreamReader(in));
            st = null;
        }
        public InputReader(int i) {
            try {
                br  = new BufferedReader(
                        new InputStreamReader(new FileInputStream(file)));
            } catch (FileNotFoundException e1) {
                System.out.println("File is not find");
            }
            st = null;
        }
        public String next(){
            while (st==null || !st.hasMoreTokens()){
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return st.nextToken();
        }
        public int nextInt()  {
            return Integer.parseInt(next());
        }
        public long nextLong(){
            return Long.parseLong(next());
        }
        public Double nextDouble(){
            return Double.parseDouble(next());
        }
       // public Character nextChar() {return next().charAt(0);}
        public void newFile() {
            try {
                FileWriter write = new FileWriter(file);
                write.write(1);
                write.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
