#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;

/**
* 最大公約数をa,bから求める
* @param [in] a 正整数
* @param [in] b 正整数
* @return 最大公約数
*/
template<typename TypeInt>
TypeInt G_C_D(TypeInt a, TypeInt b)
{
    if (a < 0) a = -a;
    if (b < 0) b = -b;
    while (b != 0) {
        a %= b;
        if (a == 0) return b;
        b %= a;
    }
    return a;
}

/**
* 最大公約数をa,b,...から求める
* @param [in] list 2つ以上の正整数
* @return 最大公約数
*/
template<typename TypeInt>
TypeInt G_C_D(const std::vector<TypeInt> &list)
{
    if (list.size() < 2)
        throw "内容が1以下\n";

    TypeInt a = list[0];
    for (size_t i = 1; i < list.size(); ++i) {
        a = G_C_D(a, list[i]);
    }
    return a;
}

/**
* 最小公約数をa,bから求める
* @param [in] a 正整数
* @param [in] b 正整数
* @return 最小公約数
*/
template<typename TypeInt>
TypeInt L_C_M(TypeInt a, TypeInt b) {
    if( a == 0 && b == 0)return 0;
    return a / G_C_D(a, b) * b;
}

/**
* 最小公約数をa,b,...から求める
* @param [in] list 2つ以上の正整数
* @return 最小公約数
*/
template<typename TypeInt>
TypeInt L_C_M(const std::vector<TypeInt> &list)
{
    if (list.size() < 2)
        throw "内容が1以下\n";

    TypeInt a = list[0];
    for (size_t i = 1; i < list.size(); ++i) {
        a = L_C_M(a, list[i]);
    }
    return a;
}




int main(){
  int N;
  cin >> N;

  long long a[N] = {};
  cin >> a[0];

  long long alcm = a[0];
  for(int i=1;i<N;i++){
    cin >> a[i];
    alcm = L_C_M(alcm, a[i]);
  }

  long long result = 0;
  for(int i=0;i<N;i++){
    result += ((alcm-1) % a[i]);
  }


  cout << result << endl;
  return 0;
}
