'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))
    .map(ab => [ab[0], ab[1], ab[0] * 4000 + ab[1]])
    .sort((abc1, abc2) => abc1[2] < abc2[2] ? 1 : abc1[2] > abc2[2] ? -1 : 0);

var ABMap = [];

var c = 0,
    p;
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 (c !== na * 4000 + nb) {
            c = na * 4000 + nb;
            p = ABMap[ABMap.length] = [na, nb, 0];
        }

        p[2] += 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) {
    let factSum = fact(p[0] + p[1]),
        factA = fact(p[0]),
        factB = fact(p[1]);

    total += p[2] * factSum / factA / factB;
}
console.log(total % (1e9 + 7));
