D. Dreamoon и множества
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Dreamoon любит играть с множествами, целыми числами и . По определению, — это наибольший общий делитель a и b, то есть наибольшее положительное целое число, которое делит как a, так и b.

Рассмотрим некоторое множество S из ровно четырех различных положительных целых чисел. Будем говорить, что S имеет ранг k, тогда и только тогда, когда для всех пар различных элементов si, sj из S, .

Даны значения k и n, Dreamoon хочет образовать n множеств ранга k, используя только целые числа от 1 до m таким образом, что никакое число не участвует в двух различных множествах (конечно, некоторые числа можно не использовать ни в одном множестве).

Вычислите минимальное m, при котором это возможно сделать, и выведите одно возможное решение.

Входные данные

В единственной строке записано два целых числа через пробел n, k (1 ≤ n ≤ 10 000, 1 ≤ k ≤ 100).

Выходные данные

В первой строке выведите единственное целое число — минимально возможное m.

В каждой из следующих n строк выведите через пробел по четыре целых числа, составляющие i-е множество.

Порядок множеств и порядок чисел во множестве может быть любым. Если имеется несколько вариантов ответа с минимальным m, выведите любой из них.

Примеры
Входные данные
1 1
Выходные данные
5
1 2 3 5
Входные данные
2 2
Выходные данные
22
2 4 6 22
14 18 10 16
Примечание

В первом примере легко увидеть, что множество {1, 2, 3, 4} не является корректным множеством ранга 1, так как .