#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
long long n, i, x[220], y[220], te, j, b[220][220], k, besar[40404], ta, tb, q;
vector<long long> gar[40404], isi[40404];
long double M[16][220][220], tempe[220], A[220], has;
long long cak(long long aa, long long bb, long long cc, long long dd) {
  long long Xa = x[bb] - x[aa], Ya = y[bb] - y[aa];
  return ((Xa * dd) == (Ya * cc));
}
void cek(long long aa, long long bb) {
  long long ii, jj, X = x[bb] - x[aa], Y = y[bb] - y[aa], GS;
  gar[te].push_back(aa);
  for (ii = 1; ii <= n; ii++)
    if (ii != aa)
      if (cak(aa, ii, X, Y)) gar[te].push_back(ii);
  for (ii = 0; ii < gar[te].size(); ii++) {
    isi[gar[te][ii]].push_back(te);
    besar[gar[te][ii]]++;
  }
  GS = gar[te].size();
  for (ii = 0; ii < GS; ii++)
    for (jj = 0; jj < GS; jj++) b[gar[te][ii]][gar[te][jj]] = 1;
}
void kal(long long aa) {
  long long ii, jj;
  for (ii = 1; ii <= n; ii++) tempe[ii] = 0;
  for (ii = 1; ii <= n; ii++)
    for (jj = 1; jj <= n; jj++) tempe[jj] += (A[ii] * M[aa][jj][ii]);
  for (ii = 1; ii <= n; ii++) A[ii] = tempe[ii];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (i = 1; i <= n; i++) cin >> x[i] >> y[i];
  for (i = 1; i <= n; i++)
    for (j = i + 1; j <= n; j++)
      if (!b[i][j]) {
        te++;
        cek(i, j);
      }
  for (i = 1; i <= n; i++) {
    long double K1 = 1.0 / (long double)besar[i];
    for (j = 0; j < besar[i]; j++) {
      for (k = 0; k < gar[isi[i][j]].size(); k++) {
        long double K2 = 1.0 / (long double)gar[isi[i][j]].size();
        K2 *= K1;
        M[0][i][gar[isi[i][j]][k]] += K2;
      }
    }
  }
  for (long long I = 1; I <= 15; I++)
    for (i = 1; i <= n; i++)
      for (j = 1; j <= n; j++)
        for (k = 1; k <= n; k++) M[I][i][j] += M[I - 1][i][k] * M[I - 1][k][j];
  cin >> q;
  while (q--) {
    cin >> ta >> tb;
    for (i = 1; i <= n; i++) A[i] = 0.0;
    A[ta] = 1;
    tb--;
    for (i = 0; i < 16; i++)
      if (tb & (1 << i)) {
        kal(i);
      }
    has = 0;
    for (i = 1; i <= te; i++) {
      long double hz = 0, K3 = 1.0 / (long double)gar[i].size();
      for (j = 0; j < gar[i].size(); j++) hz += A[gar[i][j]] * K3;
      has = max(has, hz);
    }
    cout << fixed << setprecision(21) << has << "\n";
  }
}
