#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200000;
multiset<pair<int, int> > st[MAXN + 10];
int sum, mx_cnt;
void Insert(int k, int a, int x, int y, int m, int id) {
  int cnt = 1;
  sum += k;
  if (sum <= MAXN) st[cnt].insert(make_pair(a, id));
  k--;
  while (k--) {
    int nex = (1ll * a * x + y) % m;
    if (a > nex) cnt++;
    if (sum <= MAXN) st[cnt].insert(make_pair(nex, id));
    a = nex;
  }
  mx_cnt = max(mx_cnt, cnt);
}
int main() {
  int n, a, x, y, m, k;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d%d%d", &k, &a, &x, &y, &m);
    Insert(k, a, x, y, m, i);
  }
  printf("%d\n", mx_cnt - 1);
  if (sum > 200000) return 0;
  for (int i = 1; i <= mx_cnt; i++) {
    for (multiset<pair<int, int> >::iterator iter = st[i].begin();
         iter != st[i].end(); iter++)
      printf("%d %d\n", iter->first, iter->second);
  }
  return 0;
}
