Тетрис

시간 제한2초메모리 제한1024 MB

요약
뒤집을 수 없는 테트로미노 조각을 주어진 개수만큼 사용해 작은 판의 빈칸을 모두 덮고, 각 칸에 조각 번호를 출력한다.
난이도

어려움10점 중 8점

유형
백트래킹, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

Маленький Ян очень много играл в компьютерные игры, поэтому родители запретили мальчику играть в его любимый <<Тетрис>>.

Но Ян не отчаивается. Он смастерил свою собственную игру --- <<Настольный Тетрис>>. Правила этой игры очень просты. Игра производится на прямоугольном поле размера n×mn \times m. Изначально некоторые клетки поля заняты, а остальные свободны. Игроку требуется набором фигурок из тетриса покрыть все свободные клетки, при этом фигурки не должны накладываться друг на друга или на уже занятые клетки. Так как все фигурки с одной стороны покрашены, а с другой нет, то переворачивать их нельзя, однако можно их поворачивать.

Изначально Ян хотел выпилить бесконечно много фигурок каждого типа, но он очень быстро устал, поэтому у него есть только a_ia\_i фигурок типа ii.

Ян смастерил несколько полей для игры, и теперь ему интересно, можно ли их покрыть фигурками. Помогите Яну решить эту задачу.

입력

В первой строке входного файла заданы два целых числа nn и mm (1≤n,m≤61 \le n,m \le 6) --- размеры игрового поля. В следующей строке заданы семь целых чисел a_ia\_i (0≤a_i≤100 \le a\_i \le 10). Следующие nn строк входного файла содержат описание поля. Каждая строка содержит mm символов. Символ '.' означает, что клетка свободна, '#' --- занята.

출력

Если покрыть свободные клетки фигурками нельзя выведите в выходной файл единственное слово <<NIE>> (нет по-польски). Иначе в первой строке выведите единственное слово <<TAK>> (да по-польски). В следующих nn строках выведите описание покрытого поля. Каждая строка описания должна содержать mm целых чисел --- номера фигурок, которыми покрыты соответствующие клетки поля. Фигурки должны иметь номера от 11 до 99, при этом разные фигурки должны иметь разные номера. Для изначально занятых клеток требуется выводить 00.

예제3

  1. 예제 1

    입력
    4 5
    3 0 0 0 0 0 0
    ....#
    ....#
    #..##
    #..##
    
    예상 출력
    TAK
    1 1 2 2 0
    1 1 2 2 0
    0 3 3 0 0
    0 3 3 0 0
    
  2. 예제 2

    입력
    4 5
    2 1 0 0 0 0 0
    ....#
    ....#
    #..##
    #..##
    
    예상 출력
    NIE
    
  3. 예제 3

    입력
    4 4
    1 1 0 3 0 2 0
    ....
    ....
    ....
    ....
    
    예상 출력
    TAK
    1 1 1 3
    1 2 3 3
    2 2 3 4
    2 4 4 4