#include <bits/stdc++.h>
using namespace std;
template <class T>
T _abs(T n) {
  return (n < 0 ? -n : n);
}
template <class T>
T _max(T a, T b) {
  return (!(a < b) ? a : b);
}
template <class T>
T _min(T a, T b) {
  return (a < b ? a : b);
}
template <class T>
T sq(T x) {
  return x * x;
}
const double EPS = 1e-9;
const int INF = 0x7f7f7f7f;
vector<int> g[100009];
int main() {
  int n, u, i;
  cin >> n;
  for (i = 0; i < n; i++) {
    scanf("%d", &u);
    g[u].push_back(i);
  }
  vector<pair<int, int> > r;
  for (i = 0; i <= 100005; i++)
    if (!g[i].empty()) {
      size_t j = 2;
      for (; j < g[i].size() &&
             (g[i][j] - g[i][j - 1]) == (g[i][j - 1] - g[i][j - 2]);
           j++)
        ;
      if (j >= g[i].size()) {
        r.push_back(
            pair<int, int>(i, g[i].size() == 1 ? 0 : (g[i][1] - g[i][0])));
      }
    }
  cout << r.size() << '\n';
  for (size_t j = 0; j < r.size(); j++)
    printf("%d %d\n", r[j].first, r[j].second);
  return 0;
}
