#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const ll MOD = 998244353;
const int INF = (ll)1e9 + 7;
const ll INFLL = (ll)1e18;
template <class t>
using vvector = vector<vector<t>>;
template <class t>
using vvvector = vector<vector<vector<t>>>;
template <class t>
using priority_queuer = priority_queue<t, vector<t>, greater<t>>;
template <class t, class u>
bool chmax(t &a, u b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class t, class u>
bool chmin(t &a, u b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
namespace templates {
ll modpow(ll x, ll b) {
  ll res = 1;
  while (b) {
    if (b & 1) res = res * x % MOD;
    x = x * x % MOD;
    b >>= 1;
  }
  return res;
}
ll modinv(ll x) { return modpow(x, MOD - 2); }
bool was_output = false;
template <class t>
void output(t a) {
  if (was_output) cout << " ";
  cout << a;
  was_output = true;
}
void outendl() {
  was_output = false;
  cout << endl;
}
ll in() {
  ll res;
  cin >> res;
  return res;
}
template <class t>
istream &operator>>(istream &is, vector<t> &x) {
  for (auto &i : x) is >> i;
  return is;
}
template <class t, class u>
istream &operator>>(istream &is, pair<t, u> &x) {
  is >> x.first >> x.second;
  return is;
}
template <class t>
t in() {
  t res;
  cin >> res;
  return res;
}
template <class t>
void out(t x) {
  cout << x;
}
template <class t>
vector<t> sorted(
    vector<t> line,
    function<bool(t, t)> comp = [](t a, t b) { return a < b; }) {
  sort(line.begin(), line.end(), comp);
  return line;
}
template <class t>
vector<t> reversed(vector<t> line) {
  reverse(line.begin(), line.end());
  return line;
}
}  // namespace templates
using namespace templates;
pii operator+(pii a, pii b) {
  return pii(a.first + b.first, a.second + b.second);
}
pii operator-(pii a, pii b) {
  return pii(a.first - b.first, a.second - b.second);
}
pii complete(pii a) {
  if (a.second < 0) {
    a.first = -a.first;
    a.second = -a.second;
  }
  if (a.first < 0) {
    a.first = -a.first;
    a.second = -a.second;
  }
  return a;
}
ll func() {
  std::cin.tie(nullptr);
  std::ios_base::sync_with_stdio(false);
  int n = in();
  vector<pii> line(n);
  for (auto &i : (line)) i = in<pii>();
  map<pii, ll> m;
  for (int i = (n) * (strlen("") != 0); i < (int)(strlen("") ?: (n)); ++i) {
    for (int j = (i + 1) * (strlen("n") != 0);
         j < (int)(strlen("n") ? n : (i + 1)); ++j) {
      ++m[complete(line[j] - line[i])];
    }
  }
  ll res = 0;
  for (auto &i : (m)) {
    res += i.second * (i.second - 1) / 2;
  }
  return res / 2;
}
int main() {
  cout << func() << endl;
  return 0;
}
