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.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.util.*;

public class Main {
    static final int maxn=200001;
    static long cnt[]=new long[maxn];
    static long fwt[]=new long[maxn];
    static void add(int pos, int val){
        for(; pos<maxn; pos|=(pos+1))
            fwt[pos]+=val;
    }
    static void add_cnt(int pos){
        for(; pos<maxn; pos|=(pos+1))
            cnt[pos]++;
    }
    static long get(int pos){
        long res=0;
        for(; pos>=0; pos=(pos&(pos+1))-1)
            res+=fwt[pos];
        return res;
    }
    static int get_cnt(int pos){
        int res=0;
        for(; pos>=0; pos=(pos&(pos+1))-1)
            res+=cnt[pos];
        return res;
    }
    static int a[]=new int[maxn];
    static ArrayList<Integer> ind=new ArrayList<>();
    public static void main(String[] args) throws IOException {
        BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw=new PrintWriter(System.out);
        String s=bf.readLine();
        int n=Integer.parseInt(s);
        s=bf.readLine();
        StringTokenizer st=new StringTokenizer(s);
        for(int i=1; i<=n; ++i){
            a[i]=Integer.parseInt(st.nextToken());
            ind.add(i);
        }
        Collections.sort(ind, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(a[o1],a[o2]);
            }
        });
        BigInteger ans=new BigInteger("0");
        int iter=n-1;
        for(int i=n-1; i>=0; --i){
            int el=a[ind.get(i)];
            while(iter>0 && a[ind.get(iter)]-el>1){
                add(ind.get(iter),a[ind.get(iter)]);
                add_cnt(ind.get(iter));
                --iter;
            }
            long fi=get(n)-get(ind.get(i));
            long se=get(ind.get(i));
            int cnt1=get_cnt(n)-get_cnt(ind.get(i));
            int cnt2=get_cnt(ind.get(i));
            ans=ans.add(new BigInteger(Long.toString(fi-(long)cnt1*el)));
            ans=ans.subtract(new BigInteger(Long.toString(se-(long)cnt2*el)));
        }
        pw.print(ans);
        pw.close();
    }
}