Let's denote a function 

<image>

You are given an array a consisting of n integers. You have to calculate the sum of d(ai, aj) over all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.

Input

The first line contains one integer n (1 ≤ n ≤ 200000) — the number of elements in a.

The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 109) — elements of the array. 

Output

Print one integer — the sum of d(ai, aj) over all pairs (i, j) such that 1 ≤ i ≤ j ≤ n.

Examples

Input

5
1 2 3 1 3


Output

4


Input

4
6 6 5 5


Output

0


Input

4
6 6 4 4


Output

-8

Note

In the first example:

  1. d(a1, a2) = 0; 
  2. d(a1, a3) = 2; 
  3. d(a1, a4) = 0; 
  4. d(a1, a5) = 2; 
  5. d(a2, a3) = 0; 
  6. d(a2, a4) = 0; 
  7. d(a2, a5) = 0; 
  8. d(a3, a4) = - 2; 
  9. d(a3, a5) = 0; 
  10. d(a4, a5) = 2. 
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.StringTokenizer;
      
public class Main{
        
        static long n;
        static long a[] = new long[200002];
        static BigInteger sum = new BigInteger("0") , ans = new BigInteger("0");
        static HashMap<Long,Long> mp = new HashMap<Long,Long>();
        
        static long get(long x){
            long ret = 0;
            if (mp.get(x) == null) mp.put(x,ret);
            ret = mp.get(x);
            return ret;
        }
        
        static BigInteger getAns(long x,long idx){
            long bfr = get(x-1); 
            long bval = bfr * (x-1);
            long afr = get(x+1);
            long aval = afr * (x+1);
            long same = get(x);
            long sval = same * x;
            
            //System.out.println(bval + " " + aval + " " + sval);
            
            BigInteger bb = BigInteger.valueOf(bval);
            BigInteger aa = BigInteger.valueOf(aval);
            BigInteger ss = BigInteger.valueOf(sval);
            
            BigInteger res = sum; 
            res = res.subtract(bb);
            res = res.subtract(aa);
            res = res.subtract(ss);
            
            idx--;
            BigInteger mult = BigInteger.valueOf(idx);
            mult = mult.subtract(BigInteger.valueOf(bfr));
            mult = mult.subtract(BigInteger.valueOf(afr));
            mult = mult.subtract(BigInteger.valueOf(same));
            
            BigInteger ret = BigInteger.valueOf(x);
            ret = ret.multiply(mult);
            ret = ret.subtract(res);
            
            /*System.out.println(
               "While Process " + x + " at index " +
               idx + " got res = " + res.toString() + 
               " and mult = " + mult.toString()
            );*/
            
            return ret;
        }
        
        public static void main(String[]args) throws Throwable {
		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);

		n = sc.nextLong();
                for (int i=1;i<=n;i++){
                        a[i] = sc.nextLong();
                        ans = ans.add(getAns(a[i],i));
                        long prev = 1 + get(a[i]); 
                        mp.put(a[i], prev);
                        sum = sum.add(BigInteger.valueOf(a[i]));
                }
                out.write(ans.toString() + "\n");
                out.flush();
		out.close();

	}

	static class Scanner
	{
		BufferedReader br;
		StringTokenizer st;


		Scanner(InputStream s)  { br = new BufferedReader(new InputStreamReader(s)); }
		public Scanner(String s) throws FileNotFoundException{	br = new BufferedReader(new FileReader(s));}


		String next() throws IOException
		{

			while(st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();

		}
		int nextInt() throws NumberFormatException, IOException { return Integer.parseInt(next()); }
		long nextLong() throws NumberFormatException, IOException { return Long.parseLong(next()); }




	}
        
        

}

