#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
unsigned long long int dp[maxn];
pair<int, int> st[maxn][18];
unsigned long long int ans;
pair<int, int> getRMQ(int l, int r) {
  int lg = log2(r - l);
  return max(st[l][lg], st[r - (1 << lg)][lg]);
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cout << setprecision(30);
  int n;
  cin >> n;
  for (int i = 1; i < n; i++) {
    cin >> st[i][0].first;
    st[i][0].second = i;
  }
  st[n][0] = {n, n};
  for (int i = 1; i < 18; i++) {
    for (int j = 1; j <= n; j++) {
      st[j][i] = max(st[j][i - 1], st[j + (1 << (i - 1))][i - 1]);
    }
  }
  for (int i = n; i; i--) {
    int mx = getRMQ(i, st[i][0].first + 1).second;
    dp[i] = dp[mx] - (st[i][0].first - mx) + (n - i);
    ans += dp[i];
  }
  cout << ans;
  return 0;
}
