Calc

Time limit: 0.1s Memory limit: 2MB Input: calc.in Output: calc.out

La un concurs de informatică participă 2N2 \cdot N elevi împărțiți în NN echipe de câte 22. Echipa poate lucra în comun la problemele propuse doar dacă au calculatoarele în rețea. Laboratorul de informatică e mai special: are 2N2 \cdot N calculatoare, distribuite pe două rânduri la distanță de un metru între ele (vertical și orizontal) și NN cabluri de rețea de lungime un metru. Concursul se desfășoară pe mai multe zile și nu există două zile de concurs cu aceeași configurație a rețelei.

Exemplu: pentru N=3N=3, cei 66 elevi au fost împărțiți în 33 echipe, iar aranjarea rețelei în cele 33 zile de concurs este cea din figura de mai jos.

Administratorul laboratorului vrea să memoreze în ordine lexicografică toate configurațiile folosite în zilele de concurs. Cablul orizontal se notează prin 0, iar cel vertical prin 1. Lucrând ordonat și eficient, pentru cele trei zile el își va nota valorile: 001, 100, respectiv 111. Se observă că o reprezentare de genul 000, 010, 011, 101 nu poate fi realizată.

Cerinţă

Cunoscând NN, să se determine:

  1. Numărul de zile modulo 109+710^9+7 în care se desfășoară concursul.
  2. Configurațiile laboratorului în ziua X1X-1 și ziua X+1X+1, cunoscând configurația zilei XX.

Date de intrare

Fişierul de intrare calc.in conţine pe prima linie un număr natural pp. Pentru toate testele de intrare, numărul pp poate avea doar valoarea 11 sau valoarea 22.

Pe linia a doua vom avea numărul natural NN.

Pe linia a treia se va găsi un șir de NN cifre binare, fără spații între ele, reprezentând configurația corectă realizată de administrator în ziua XX.

Date de ieșire

Dacă valoarea lui pp este 11, se va rezolva numai punctul 1 din cerință.

În acest caz, în fişierul de ieşire calc.out se va scrie un singur număr natural ZZ reprezentând numărul de zile în care se desfășoară concursul pentru cele NN echipe.

Dacă valoarea lui pp este 22, se va rezolva numai punctul 2 din cerință.

În acest caz, fişierul de ieşire calc.out va conține două linii. Pe prima linie se vor scrie NN cifre binare, fără spații între ele, reprezentând configurația rețelei din ziua precedentă, iar pe a doua linie NN cifre binare, fără spații între ele, reprezentând configurația din ziua următoare. Dacă în ziua precedentă nu există o configurație conform cerințelor problemei, se va scrie pe prima linie valoarea 1-1. Dacă în ziua următoare nu există o configurație conform cerințelor problemei, se va scrie pe a doua linie valoarea 1-1.

Restricții și precizări

  • 1N100 0001 ≤ N ≤ 100 \ 000
  • Pentru rezolvarea corectă a primei cerinţe se acordă 2020 de puncte, iar pentru cerința a doua se acordă 8080 de puncte.

Exemplul 1

calc.in

1
3
001

calc.out

3

Exemplul 2

calc.in

2
3
001

calc.out

-1
100

Log in or sign up to be able to send submissions!