'use strict';

var lines = require('fs').readFileSync('/dev/stdin', 'utf8').trim().split('\n');

var N = +lines[0];
var ABs = lines.slice(1).map(l => l.split(' ').map(Number));

var ABMap = new Map();

for (let i = 0; i < ABs.length; i++) {
    for (let j = i + 1; j < ABs.length; j++) {
        let na = ABs[i][0] + ABs[j][0],
            nb = ABs[i][1] + ABs[j][1];

        if (ABMap.has(na + '-' + nb)) {
            ABMap.get(na + '-' + nb)[2]++;
        } else {
            ABMap.set(na + '-' + nb, [na, nb, 1]);
        }
    }
}

var total = 0;

var factCache = [1]

function fact(n) {
    while (factCache.length <= n) {
        factCache[factCache.length] = factCache[factCache.length - 1] * factCache.length;
    }

    return factCache[n];
}

for (let p of ABMap.values()) {
    let factSum = fact(p[0] + p[1]),
        factA = fact(p[0]),
        factB = fact(p[1]);

    total += p[2] * factSum / factA / factB;
}
console.log(factCache);

console.log(total % (1e9 + 7));
