#!/usr/bin/env python3
from random import randint, shuffle

w = 60
h = 60
n = w * h

def shuffled(arr):
  z = arr[::]
  shuffle(z)
  return z

def get_id(x, y):
  
  if y % 2 == 1:
    x -= 1
  if x % 2 == 1:
    return -1
  x //= 2
  if x < 0 or x >= w:
    return -1
  if y < 0 or y >= h:
    return -1
  return y * w + x + 1

edges = set()
for x in range(w * 2 + 1):
  for y in range(h):
    d = get_id(x, y)
    if d != -1:
      for e in [get_id(x-1,y-1), get_id(x+1, y-1), get_id(x-2, y), get_id(x+2, y), get_id(x-1, y+1), get_id(x+1, y+1)]:
        if e != -1 and randint(0,2) != 0:
          edges.add((d, e))

print('{} {}'.format(n, len(edges)))
print(' '.join(map(str, [randint(0, 10**6) for i in range(n)])))
for a, b in shuffled(list(edges)):
  print('{} {}'.format(a,b))
