Cerință
Se consideră planul infinit 2D ce conţine toate punctele de coordonate ȋntregi, de pe care s-a şters sistemul de coordonate (astfel nu se mai pot cunoaşte coordonatele unui punct, dar ȋncă se poate calcula distanţa dintre oricare puncte şi se pot diferenţia sensurile sus-jos şi stânga-dreapta). Iniţial toate punctele de coordonate ȋntregi din plan sunt colorate ȋn alb. Apoi este selectată o mulţime formată din cel puţin puncte, iar punctele din mulţime sunt colorate ȋn negru astfel încât există următoarea proprietate: există două puncte negre la distanţa Manhattan iar distanţa Manhatan dintre oricare alte puncte negre nu depăşeşte . Determinaţi câte mulţimi diferite de puncte cu această proprietate pot fi selectate. Două mulţimi de puncte şi se consideră identice dacă conţin acelaşi număr de puncte negre şi dacă există două amplasări posibile ale originii sistemului de coordonate astfel încât punctele din mulţimea şi cele din mulţimea să aibă exact aceleaşi coordonate (altfel spus, mulţimea se poate obţine din mulţimea prin translaţia pe orizontală şi/sau verticală a tuturor punctelor din ). Distanţa Manhattan dintre două puncte şi este definită ca .
Cunoscând valoarea , determinaţi numărul de mulţimi ce pot fi selectate modulo ().
Date de intrare
Fişierul de intrare dsets.in
conţine pe prima linie numărul natural .
Date de ieșire
Fişierul de ieşire dsets.out
va conţine pe prima linie un singur număr natural ce reprezintă numărul de mulţimi diferite modulo .
Restricții și precizări
- din teste vor avea
Exemplul 1
dsets.in
1
dsets.out
2
Explicație
Cele două mulţimi au următoarea structură:
- două puncte aflate la distanţă şi având aceeaşi coordonată
- două puncte aflate la distanţă şi având aceeaşi coordonată
Exemplul 2
dsets.in
2
dsets.out
21
Exemplul 3
dsets.in
3
dsets.out
280
Exemplul 4
dsets.in
4
dsets.out
8400
Exemplul 5
dsets.in
12345
dsets.out
290642959
Exemplul 6
dsets.in
1000000000
dsets.out
957938183