0
1
mirror of https://git.sb/baoshuo/OI-codes.git synced 2024-11-30 20:56:29 +00:00
OI-codes/LibreOJ/10114/data/stars9.out

15001 lines
44 KiB (Stored with Git LFS)
Plaintext

2
2
1
1
1
1
1
2
2
1
2
2
1
1
2
1
2
2
1
1
1
2
1
2
2
2
1
1
1
1
1
2
2
1
2
1
2
1
2
2
2
2
1
1
2
1
1
2
2
1
1
1
1
1
2
2
1
1
1
1
1
2
1
2
1
2
2
1
2
2
2
1
1
1
2
2
2
2
1
1
1
1
1
1
2
2
2
1
2
2
2
1
1
2
1
2
1
1
1
2
1
2
1
1
2
1
2
2
1
1
1
2
1
2
2
2
1
2
2
1
1
1
2
1
1
2
1
2
1
1
1
2
2
1
2
2
1
1
1
1
2
2
2
2
1
2
1
1
2
1
2
1
2
1
2
2
1
2
1
1
1
2
2
1
2
1
1
1
2
2
2
2
2
1
2
1
1
2
2
2
2
1
1
1
2
2
2
2
2
1
2
1
1
1
2
2
1
1
1
1
1
2
2
1
2
2
1
1
2
2
2
1
2
2
1
2
1
1
1
1
2
1
2
2
2
2
1
2
1
1
1
1
2
2
1
1
1
1
1
1
2
2
1
1
1
2
1
1
2
2
2
1
2
2
1
1
1
2
1
1
1
2
1
1
1
2
1
2
2
1
2
1
1
1
1
2
2
2
1
1
2
1
2
2
2
1
1
1
1
1
1
2
1
2
1
2
2
2
1
1
1
2
1
1
1
2
1
2
2
2
1
2
1
2
1
1
1
1
1
1
1
1
2
1
1
2
2
1
2
1
1
1
1
2
2
1
2
2
1
2
2
2
2
2
1
2
2
1
2
2
1
1
1
1
1
1
2
2
2
1
1
2
1
2
1
2
1
2
2
1
2
1
1
1
2
2
2
2
2
1
1
2
1
1
2
2
1
1
1
2
2
2
1
2
2
1
1
2
2
1
2
2
1
2
1
1
2
2
2
2
2
2
2
2
2
1
1
1
2
2
1
2
1
2
1
1
1
2
1
2
2
2
1
2
1
1
2
1
2
2
2
2
1
1
2
1
2
2
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
1
2
2
1
2
2
2
2
2
1
2
2
1
1
2
2
2
2
1
1
1
1
1
2
1
2
2
1
2
1
1
2
1
1
1
2
2
1
1
2
1
2
1
2
1
1
2
2
2
1
2
1
1
2
1
2
1
1
1
2
1
1
1
2
1
1
2
1
2
2
2
2
2
2
1
1
1
2
2
1
1
1
2
2
1
2
1
2
1
1
2
2
1
2
2
1
1
2
1
2
1
2
1
1
2
2
1
2
2
1
2
1
2
1
1
2
1
2
1
2
2
2
1
1
1
1
2
1
2
1
1
2
2
2
2
2
1
1
2
2
2
2
2
2
1
1
1
2
2
1
1
2
1
1
2
2
2
1
2
2
1
1
1
1
1
2
2
1
2
1
2
1
2
2
2
2
1
2
2
1
2
2
2
2
1
1
2
1
2
2
1
1
1
1
1
2
2
1
1
1
2
1
1
1
2
1
1
1
1
1
1
2
1
2
2
1
2
1
2
2
1
1
2
1
2
2
1
2
1
2
2
1
1
1
1
1
2
1
2
2
2
1
1
2
2
2
2
2
2
1
1
1
2
2
2
2
1
1
2
1
1
2
2
1
1
1
1
1
2
2
2
1
1
1
1
1
2
2
2
2
1
2
1
2
1
1
1
1
1
2
2
2
1
2
1
2
1
2
2
2
2
2
2
1
2
2
1
2
1
2
1
1
1
1
2
1
1
1
1
2
1
1
1
1
2
1
2
2
1
2
2
1
1
2
1
1
1
2
2
2
2
2
2
2
1
1
1
2
2
1
2
2
2
2
1
2
2
1
2
2
2
1
2
2
1
1
2
2
1
1
1
2
2
1
1
1
2
2
1
1
1
1
1
2
1
2
2
1
2
2
2
2
2
1
2
2
2
2
2
2
1
2
1
2
1
1
1
2
2
2
1
1
1
1
2
2
2
2
2
2
1
1
1
2
2
2
1
2
1
1
2
2
2
1
1
1
2
2
1
2
2
2
2
2
2
2
1
1
1
1
2
1
1
2
1
2
1
1
1
2
1
1
1
1
2
1
1
2
1
1
1
1
2
1
2
1
2
2
1
2
1
2
2
1
2
1
2
2
1
2
1
1
1
1
2
2
2
2
2
1
1
1
2
2
2
1
2
1
2
2
2
2
2
1
2
1
2
2
2
1
2
2
1
2
1
2
1
1
1
1
2
2
2
2
2
2
1
2
1
2
1
2
2
2
1
2
1
1
1
1
1
1
1
2
2
1
2
2
2
1
1
2
1
1
1
1
1
1
2
2
2
1
1
1
2
1
1
1
2
2
2
1
2
1
1
1
1
1
1
1
1
2
2
1
1
2
2
2
2
2
2
2
2
1
1
2
2
2
1
2
1
1
2
1
2
1
1
1
2
1
1
2
1
2
1
1
1
1
1
2
1
2
2
2
1
1
1
2
1
1
1
2
1
2
2
1
1
1
1
2
1
2
2
1
2
1
1
2
1
1
2
1
1
1
2
1
2
1
1
2
1
2
2
1
1
2
2
1
1
1
1
1
2
1
2
2
2
1
2
2
2
1
1
2
2
2
2
2
1
2
1
1
1
1
1
2
1
1
2
2
2
2
1
2
2
2
2
2
2
2
1
1
2
1
1
1
2
2
2
1
1
2
2
2
1
1
2
2
1
1
2
2
1
1
2
1
2
1
1
1
2
1
2
1
1
1
2
2
1
1
2
2
2
1
1
1
2
2
1
2
2
2
1
1
1
2
1
2
1
1
2
2
2
1
1
2
2
2
2
1
1
2
2
2
1
1
2
1
1
2
1
1
1
1
2
2
1
2
2
1
1
1
2
1
2
2
1
1
2
1
1
2
1
2
2
2
2
2
2
2
1
1
1
2
1
2
1
2
2
1
1
1
1
1
1
1
2
1
2
2
2
2
2
2
2
2
2
1
2
1
1
2
1
1
1
1
1
1
1
2
2
2
1
1
2
1
1
2
2
1
2
2
1
1
1
1
1
2
1
2
2
2
1
1
1
1
1
1
1
1
2
2
1
1
1
2
2
1
2
1
2
1
1
2
2
2
1
1
1
1
2
2
2
2
2
2
2
1
1
1
1
1
2
1
2
1
1
1
1
1
1
2
1
1
1
1
2
2
2
2
2
2
1
1
2
1
1
2
1
1
2
1
1
2
2
2
2
1
1
1
2
1
1
1
1
2
2
2
1
1
1
1
2
1
1
2
1
1
1
2
2
2
1
2
2
2
1
2
1
1
1
2
1
2
2
1
1
1
2
2
1
1
2
1
1
2
1
2
1
1
2
2
1
1
1
2
1
2
1
2
1
1
1
1
2
2
1
1
1
2
1
1
1
1
2
2
2
2
1
1
2
2
1
2
1
2
2
2
2
1
1
1
1
1
2
2
1
1
2
2
2
2
1
1
2
1
2
2
2
1
2
2
2
1
2
1
2
1
1
2
2
1
2
2
2
1
1
1
2
2
1
1
1
1
2
1
2
1
1
2
1
1
1
1
1
2
1
2
1
2
2
1
1
2
1
1
1
2
1
1
1
1
2
2
2
2
2
1
2
2
1
1
2
1
2
1
2
2
1
1
1
1
1
1
1
1
2
2
1
2
1
1
2
1
2
2
2
2
2
2
2
2
2
2
1
2
1
2
2
1
2
1
2
1
1
1
2
1
2
2
2
2
2
2
2
1
1
2
1
2
1
2
1
1
2
2
2
2
1
1
2
2
2
1
1
1
2
2
2
2
2
2
1
2
2
1
1
2
2
1
2
2
2
2
1
2
1
2
1
1
1
1
2
2
1
1
2
2
1
2
2
1
1
2
1
2
1
2
1
1
2
1
2
1
1
2
1
1
2
1
2
1
2
1
1
2
2
1
2
2
2
2
2
2
2
2
2
2
2
2
2
1
1
2
2
2
1
2
1
1
2
2
2
1
2
2
2
2
1
1
2
2
2
2
1
1
2
1
2
1
2
1
1
2
1
2
1
2
1
1
1
2
1
1
2
2
1
1
1
2
2
2
1
1
1
2
2
2
2
1
2
2
1
2
2
1
2
2
1
2
2
2
2
1
2
1
1
1
1
2
1
2
2
2
1
1
1
2
1
2
2
2
1
2
1
2
2
1
1
2
1
2
2
2
1
1
2
1
2
2
1
1
1
2
2
1
1
1
2
2
1
2
1
2
2
1
2
1
1
2
1
2
1
1
2
1
2
1
1
1
1
2
1
2
2
2
1
2
2
1
2
1
1
1
1
2
2
1
2
1
1
2
1
1
2
1
2
2
1
2
1
1
1
1
1
2
1
1
2
2
2
1
2
2
2
1
1
2
1
2
2
2
2
2
1
2
1
2
1
2
1
1
2
1
2
1
2
2
2
2
1
1
1
1
1
2
1
1
1
2
2
1
1
1
1
2
2
1
2
2
1
2
1
2
1
1
2
1
2
2
2
1
2
2
2
1
1
1
1
2
2
2
1
1
2
2
1
2
1
2
2
1
1
2
2
2
1
1
1
1
2
2
2
1
2
2
2
1
2
1
1
2
1
1
1
2
2
1
1
2
2
2
1
1
1
1
1
1
2
2
1
1
1
2
1
1
1
2
1
2
1
2
1
2
2
2
1
2
2
2
2
1
2
2
1
1
2
1
1
2
2
1
2
1
1
1
2
1
2
1
1
1
2
1
2
1
2
2
2
2
2
2
2
1
1
1
2
1
2
2
2
1
1
1
2
2
2
1
1
2
2
1
1
1
2
1
1
1
1
1
1
2
2
1
1
2
2
1
1
2
1
1
2
2
2
2
1
1
1
2
2
1
2
1
1
2
2
1
1
1
1
2
2
2
1
2
2
1
1
2
1
1
2
1
1
1
2
1
2
1
2
2
2
2
1
1
1
1
2
1
1
2
1
2
2
1
2
1
2
2
2
1
1
1
1
1
2
1
1
1
1
1
2
2
2
1
1
1
1
1
1
2
2
1
1
1
1
2
1
2
1
2
2
1
1
2
1
1
2
1
2
1
1
1
1
2
1
1
2
1
1
1
2
1
1
1
2
2
1
1
2
1
1
2
1
2
2
1
1
2
2
2
1
2
1
2
1
2
1
2
2
2
2
2
1
1
2
1
1
2
2
2
1
2
2
2
1
1
2
1
1
1
1
2
2
1
1
1
1
1
2
2
1
2
2
1
1
1
1
1
2
1
1
1
1
2
1
2
1
2
1
2
1
1
1
2
1
2
1
2
1
2
2
1
2
2
2
2
1
1
2
2
2
1
1
2
1
2
1
1
2
1
2
1
2
1
1
2
1
1
2
2
2
1
2
2
1
2
1
1
2
2
1
1
2
1
1
2
2
2
1
1
1
2
2
2
1
2
1
1
2
2
2
2
2
1
2
2
1
2
1
2
1
2
2
2
1
1
2
1
2
1
1
2
2
2
2
2
1
1
2
1
2
1
2
2
1
1
2
1
1
2
2
1
1
2
1
2
1
1
2
1
2
1
1
2
2
1
2
1
2
2
2
2
2
1
1
1
2
1
2
1
2
1
2
2
1
2
1
2
2
2
2
1
1
1
2
2
2
2
1
1
1
2
2
2
1
1
1
2
1
2
1
2
2
1
1
1
2
1
1
2
2
1
2
1
2
1
2
2
1
2
2
2
2
2
1
1
2
2
1
2
1
2
2
1
1
1
1
1
1
2
1
2
2
1
1
2
2
1
2
1
1
2
1
1
1
2
2
1
2
2
1
2
1
2
2
2
1
2
1
2
1
2
2
1
1
2
2
1
2
2
1
1
1
1
2
1
2
2
2
2
2
1
1
2
1
2
1
2
1
2
2
2
1
1
1
1
2
1
1
2
1
2
2
2
2
1
2
1
2
2
1
1
1
2
2
1
1
1
1
1
2
1
1
1
2
2
2
2
2
2
2
1
1
2
1
2
1
2
1
1
2
1
1
2
2
2
1
1
1
1
1
1
1
2
1
2
2
1
2
1
2
1
1
1
2
2
2
2
1
2
1
2
2
1
1
2
1
2
2
2
1
1
2
2
2
1
1
2
2
1
1
1
2
1
1
1
2
2
2
1
1
2
1
1
2
2
2
2
1
2
1
2
2
2
2
1
2
2
2
2
1
1
2
2
2
1
2
1
2
2
2
1
1
1
2
1
1
1
1
2
2
2
1
1
1
2
1
1
2
1
1
2
1
2
2
1
2
2
1
1
1
1
2
1
2
2
1
2
2
1
1
2
2
1
1
2
1
1
1
2
1
1
2
1
1
1
1
1
2
2
2
1
1
2
2
2
2
2
2
2
1
2
2
2
2
1
1
1
2
1
1
2
2
1
2
1
2
2
2
1
2
2
2
2
1
2
2
2
2
1
2
1
1
2
1
2
1
1
2
2
2
1
2
1
2
1
2
1
1
1
2
2
2
2
1
2
2
1
1
2
1
2
1
1
2
2
2
1
2
1
2
2
1
2
2
1
2
1
2
1
1
1
1
1
1
1
1
1
2
1
2
1
2
1
2
2
2
2
2
1
2
2
1
1
1
1
1
2
1
1
1
1
1
2
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
2
2
2
1
1
2
1
2
2
1
1
2
2
1
2
1
2
1
1
1
2
2
2
2
2
1
2
1
1
2
1
2
1
2
2
1
2
1
1
1
1
1
2
1
1
1
2
2
2
2
2
1
1
2
2
2
2
2
1
1
2
1
1
2
1
2
2
2
2
1
2
1
2
1
2
2
2
2
1
2
2
1
1
2
1
1
1
2
1
2
1
2
2
2
1
1
1
2
1
1
1
1
1
2
2
2
2
1
1
2
1
1
1
2
1
1
2
1
2
1
2
2
2
1
2
1
2
1
2
1
2
2
2
1
1
1
1
2
2
2
1
1
1
2
2
1
1
2
2
1
2
1
1
1
1
2
2
1
2
1
2
2
1
1
1
1
1
1
2
2
1
2
1
1
1
1
1
1
1
1
2
2
2
2
2
1
1
2
2
1
2
1
2
2
2
2
2
2
2
1
2
1
2
1
1
2
2
2
1
1
1
2
2
1
1
2
2
1
2
1
1
1
1
1
1
2
2
1
2
2
2
1
1
1
2
1
2
2
2
1
1
2
1
1
2
2
2
2
1
2
2
2
2
2
1
2
1
1
2
2
1
1
1
1
2
1
1
1
2
1
1
2
2
1
1
1
2
1
2
2
2
2
2
2
1
1
2
2
2
1
2
2
1
1
1
1
2
1
2
2
2
1
1
1
1
1
1
1
1
2
1
1
1
2
2
2
2
2
2
2
1
1
2
2
2
2
2
1
2
2
2
2
1
2
2
2
2
1
2
2
1
2
2
1
1
2
1
2
1
1
1
1
2
2
1
1
2
2
1
2
2
2
2
2
1
2
1
1
2
1
1
1
2
2
2
1
1
1
1
1
1
2
1
1
2
1
2
2
1
2
2
1
2
1
1
1
2
2
2
2
1
1
1
1
2
2
1
1
2
2
2
1
1
1
2
1
1
2
1
2
2
1
1
2
2
2
2
2
2
1
1
1
1
1
2
1
2
2
2
2
2
2
2
1
1
1
1
2
1
2
1
1
2
2
1
2
1
2
1
1
1
2
2
2
2
1
2
1
2
1
2
2
2
2
2
2
1
2
1
2
2
1
1
1
2
2
2
2
1
1
1
1
1
1
2
1
2
2
2
2
2
1
1
2
2
2
1
2
1
2
2
2
1
1
2
1
1
1
1
1
1
1
2
1
1
1
1
1
2
1
1
2
1
2
2
2
1
2
1
2
2
1
1
1
1
1
1
1
2
2
1
2
2
2
2
2
2
2
1
2
2
1
1
2
2
1
1
1
1
1
2
1
1
1
2
1
1
2
2
1
2
1
1
1
1
2
1
2
2
1
2
2
2
1
1
1
1
2
2
2
2
2
1
1
2
1
2
2
2
2
1
1
1
2
2
1
2
1
2
2
2
2
2
1
2
1
1
2
2
1
1
1
1
2
2
2
1
2
2
1
2
2
2
1
1
2
2
1
2
1
2
2
1
1
2
2
1
2
2
2
2
2
1
1
2
2
2
2
1
1
2
2
1
1
1
2
1
2
1
2
1
2
2
1
2
1
1
2
2
2
1
2
2
1
1
1
2
1
1
2
2
2
2
1
1
2
1
2
1
2
2
1
1
2
2
2
2
1
2
2
2
1
2
1
1
2
2
1
1
1
2
2
1
1
2
1
1
1
1
2
1
2
2
2
2
2
2
1
2
1
1
1
2
2
1
1
2
2
2
1
1
1
2
2
1
1
1
2
1
1
2
1
2
1
1
2
1
2
1
1
2
1
2
2
1
1
1
1
2
1
1
2
2
2
2
1
1
2
1
2
2
1
2
1
2
1
1
1
1
1
2
1
2
2
1
1
2
2
1
1
2
2
2
2
2
1
1
1
1
1
1
1
1
2
1
1
2
2
1
1
1
1
1
2
1
1
2
1
1
1
1
1
2
1
1
1
1
1
1
2
1
1
2
1
1
2
2
1
1
1
2
1
1
2
2
2
2
1
1
1
1
2
1
1
1
1
1
1
2
1
2
1
1
1
2
1
2
2
2
2
2
2
2
1
2
1
1
2
2
2
1
1
2
1
2
2
2
1
2
2
2
1
2
1
1
2
1
1
1
1
2
2
1
2
2
1
1
2
2
2
1
2
2
2
1
2
2
2
2
2
2
1
1
1
2
2
2
2
1
2
2
2
2
2
1
2
2
1
1
1
1
2
2
1
1
1
1
2
1
2
1
1
1
2
1
1
2
2
1
2
1
2
1
2
2
1
2
1
2
2
2
1
2
1
2
2
2
2
2
1
2
1
1
1
1
2
2
2
1
2
1
2
2
2
2
2
1
2
2
1
1
1
2
2
2
2
2
2
1
1
2
1
2
1
1
2
1
2
1
2
2
1
2
2
1
2
2
2
2
2
2
1
1
2
2
2
2
1
1
1
2
1
2
1
1
2
1
1
2
1
2
1
1
2
2
2
2
2
2
2
1
2
2
2
1
2
2
1
1
2
1
2
1
2
1
2
2
2
1
1
2
1
2
2
1
2
2
1
1
2
2
1
1
2
2
2
1
1
1
1
1
2
1
1
1
1
2
1
2
1
2
1
1
1
2
2
1
1
2
1
1
1
2
1
2
1
2
1
2
2
1
1
2
2
2
2
1
1
1
2
1
1
1
2
1
1
2
1
1
2
1
1
2
1
1
1
1
1
1
2
1
1
2
2
2
1
2
2
2
1
1
2
1
1
2
2
1
2
2
1
1
2
1
2
2
1
1
1
1
2
1
1
2
1
1
1
1
1
2
2
2
2
1
1
1
2
1
1
2
2
2
1
2
1
2
2
2
2
2
2
2
1
1
1
2
1
2
2
1
2
1
1
2
2
2
2
2
2
2
1
1
1
2
1
1
1
2
1
2
1
2
2
1
1
1
2
1
1
2
2
1
1
2
2
2
2
2
1
2
2
2
1
2
2
2
2
2
2
1
1
2
2
1
1
2
2
1
2
2
1
1
1
1
1
1
1
1
2
1
2
1
1
1
2
1
2
2
1
1
2
2
2
1
1
2
2
2
1
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
2
1
2
1
1
2
2
2
1
1
2
1
1
2
2
1
1
2
2
2
1
2
2
2
2
1
1
2
2
1
2
2
2
2
2
1
1
1
2
2
1
1
2
1
1
1
1
2
2
2
1
1
1
2
1
2
2
1
1
1
1
1
2
1
2
1
2
2
2
2
2
1
1
1
2
2
1
2
1
2
2
1
2
1
2
1
1
1
2
1
1
2
2
2
2
2
1
2
1
1
1
1
2
2
2
1
2
2
1
2
1
2
2
1
1
2
1
2
2
1
2
1
2
2
1
2
2
1
2
2
1
1
1
1
2
2
1
1
1
2
1
1
1
2
2
2
2
1
2
1
1
2
1
2
1
2
2
2
1
1
2
2
2
1
1
2
1
2
1
2
2
2
1
1
2
1
2
1
1
2
1
1
2
2
1
1
1
2
2
2
2
1
2
2
1
1
2
1
1
2
1
1
2
2
1
1
2
2
2
2
1
2
2
2
2
1
1
1
1
2
1
1
1
2
2
2
1
1
2
2
2
2
1
1
2
1
1
2
2
1
2
1
2
2
2
1
1
2
1
2
1
2
1
1
2
2
2
1
1
1
2
1
2
1
1
2
2
2
1
1
2
2
1
1
1
2
2
2
1
2
1
1
1
1
1
2
2
1
1
2
1
2
1
1
2
1
1
1
1
1
1
2
1
1
1
2
1
2
1
1
2
2
2
1
1
2
2
1
1
2
1
2
2
1
2
2
2
2
1
1
2
1
2
1
2
1
1
2
1
1
2
2
2
2
2
1
2
1
2
2
2
1
1
1
2
1
2
2
2
2
1
1
2
2
1
1
2
2
2
1
1
1
2
2
2
2
1
1
1
2
1
1
2
1
1
1
2
2
1
2
1
1
2
1
2
2
1
2
1
2
1
2
1
1
1
1
1
1
1
2
2
1
1
1
2
1
1
2
1
2
2
1
2
2
1
2
2
2
2
2
1
2
2
1
2
1
1
2
2
1
1
1
1
2
1
2
2
1
1
2
1
1
2
1
1
2
2
1
1
1
2
1
1
1
2
1
1
1
1
1
1
2
1
1
1
2
2
1
1
2
2
2
1
1
2
1
2
2
1
1
1
1
1
2
2
1
1
2
2
1
2
1
2
2
1
2
1
1
1
1
2
1
2
2
1
1
2
1
1
1
1
2
1
1
1
2
1
1
2
1
2
1
1
2
1
2
2
2
2
2
2
2
2
1
2
1
2
1
2
1
1
1
1
1
2
1
1
1
2
1
1
2
2
1
2
1
1
2
2
1
1
2
2
1
1
2
2
1
2
1
1
1
1
1
1
1
1
2
2
1
1
2
1
1
2
2
2
2
1
2
2
1
1
2
1
2
1
2
2
1
2
1
2
2
1
2
2
1
2
2
2
2
1
1
1
2
1
1
2
2
2
2
2
2
2
1
2
2
1
1
1
1
2
2
2
2
2
1
1
1
1
1
1
1
2
2
2
2
2
1
2
2
2
2
1
1
2
2
2
2
1
1
2
2
2
1
2
2
2
2
1
2
2
2
1
2
2
2
1
1
2
1
2
2
1
1
1
2
2
2
2
1
2
1
1
1
2
1
2
1
1
2
2
1
2
2
2
2
1
1
2
1
2
2
1
1
2
1
2
2
2
1
1
2
1
1
2
1
2
1
1
1
2
2
2
2
2
1
2
1
1
2
1
1
1
2
1
1
1
1
2
1
1
1
1
2
2
2
2
1
2
2
2
1
2
1
1
1
2
2
1
2
1
2
1
1
2
1
1
1
1
2
2
2
2
2
1
1
2
1
2
1
2
2
2
1
2
2
2
1
1
1
1
2
1
1
1
1
2
1
1
1
2
2
2
2
1
1
2
1
2
1
2
1
2
1
2
1
2
2
1
2
2
1
2
2
2
1
1
2
2
1
2
2
2
2
1
2
2
1
1
1
1
2
1
2
1
1
1
2
1
2
1
2
2
2
2
2
1
2
2
2
2
1
1
2
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
1
1
2
2
2
1
2
2
2
1
1
2
1
2
1
2
2
1
1
2
1
2
1
1
1
2
2
2
2
2
1
2
2
2
2
1
1
2
1
1
1
1
1
2
1
2
2
1
2
1
1
2
1
1
1
1
1
2
2
1
1
2
2
2
2
1
1
2
2
2
1
1
1
2
1
2
1
1
2
1
2
1
1
2
2
1
1
1
1
1
1
2
2
2
1
2
1
2
2
2
1
1
1
2
1
1
1
1
2
1
1
1
1
1
2
1
2
2
1
1
2
1
1
1
1
2
2
2
1
1
1
1
2
2
2
2
2
2
2
1
1
1
2
1
1
1
1
2
2
2
2
2
1
1
1
1
2
2
2
1
2
2
2
2
2
2
1
2
2
1
2
2
2
2
1
1
1
2
2
2
1
1
1
2
2
2
1
2
1
1
2
1
2
1
2
1
2
2
1
2
1
1
2
1
1
2
2
2
1
1
2
2
1
2
2
1
2
1
2
1
1
2
1
1
1
2
2
1
1
2
2
1
2
2
1
1
1
2
2
2
2
2
1
2
2
1
1
1
1
1
1
2
2
2
1
2
2
2
1
2
2
1
2
2
2
1
1
2
2
2
1
2
1
2
2
1
2
1
2
1
1
2
1
1
1
1
1
1
1
2
1
2
2
2
2
2
1
2
2
1
1
1
2
2
1
1
1
2
1
1
2
2
1
2
2
2
1
2
2
2
1
2
2
1
1
2
1
1
1
1
2
1
1
1
1
2
2
1
2
1
1
2
2
2
2
2
2
1
2
2
1
2
2
1
2
1
1
1
2
1
1
1
1
1
2
1
2
2
1
1
2
2
1
1
1
2
1
1
2
1
1
1
2
2
2
1
1
2
1
1
2
2
2
2
2
1
2
2
1
1
1
1
1
2
1
1
2
1
2
2
1
1
1
2
2
1
2
2
2
2
1
1
2
2
1
2
2
2
2
2
2
2
1
2
1
1
2
2
2
2
2
1
1
1
1
2
2
2
1
2
1
2
2
1
2
2
2
1
1
2
1
1
2
1
1
1
1
1
2
1
1
2
2
1
1
1
2
2
2
2
1
2
1
2
2
2
1
2
2
2
1
1
1
1
1
2
2
2
2
1
1
2
2
2
2
1
2
1
2
2
2
2
2
1
2
2
2
1
2
1
2
1
1
2
1
1
1
1
2
1
2
1
2
1
1
1
2
2
2
1
2
2
2
2
1
1
2
2
1
1
2
2
2
2
2
2
2
1
2
2
2
2
1
2
1
1
2
1
1
2
2
2
2
1
2
1
2
2
1
2
1
2
1
2
1
1
2
1
2
2
2
2
2
1
2
2
1
1
2
1
2
2
1
2
1
2
1
2
2
1
2
2
2
1
1
2
2
1
1
1
2
2
2
2
2
2
2
2
2
2
1
2
1
2
2
1
2
1
1
1
1
2
2
1
2
1
1
1
1
1
1
1
1
2
1
2
1
1
1
1
1
2
2
2
1
1
2
1
2
2
1
1
1
1
2
1
1
2
2
2
1
1
1
1
1
1
2
1
1
2
2
1
2
2
1
1
1
1
2
1
2
1
2
1
2
2
1
1
1
1
2
2
1
1
1
1
1
1
1
2
1
2
2
1
2
1
2
1
1
2
2
2
2
2
1
2
1
2
2
2
1
2
1
1
2
1
1
2
2
1
2
2
2
1
1
1
1
2
1
1
1
1
1
2
2
2
2
2
2
1
1
1
1
2
1
2
2
1
1
2
2
2
2
1
2
1
1
2
1
2
1
1
1
1
2
2
2
1
2
1
2
2
2
2
1
2
2
1
1
1
1
2
2
2
2
2
2
1
1
2
2
1
2
1
1
1
2
2
1
2
2
1
2
2
1
2
1
1
1
1
1
2
2
2
1
2
1
2
2
2
1
1
2
2
2
1
2
2
1
2
1
1
2
1
2
2
2
1
2
1
1
1
2
2
1
2
1
1
2
1
2
1
1
1
2
1
1
2
1
2
2
2
2
2
1
2
2
1
1
2
1
2
1
2
1
1
2
2
2
1
1
2
2
2
1
1
2
2
2
2
2
1
1
2
2
1
2
1
1
2
1
2
2
2
1
1
1
2
2
2
1
2
2
1
1
2
1
1
1
1
1
1
1
1
2
2
2
2
2
1
2
1
2
2
2
2
1
1
1
1
1
1
2
2
1
1
1
1
2
2
1
2
2
2
1
2
2
1
1
2
2
2
2
2
1
2
2
1
1
2
1
2
1
1
1
2
2
1
2
1
2
2
1
1
1
1
2
2
2
2
1
2
1
2
2
1
2
1
2
1
2
1
2
1
1
1
2
1
1
1
1
2
2
1
2
1
1
2
2
2
2
1
2
2
2
1
2
2
2
2
2
2
1
2
2
2
2
1
1
1
1
1
1
2
1
1
2
2
1
2
1
1
2
2
2
2
1
1
2
2
1
2
2
2
1
2
2
2
1
1
1
2
2
1
1
2
2
1
1
2
1
2
1
1
1
1
1
2
2
2
2
1
2
2
2
1
1
1
2
1
1
2
1
2
1
1
1
2
2
1
2
2
1
1
2
2
1
2
2
2
2
2
1
2
2
1
2
2
2
1
1
2
2
1
2
1
2
2
1
2
2
2
2
2
2
2
2
1
1
2
2
1
1
1
1
2
1
1
1
1
1
2
1
1
1
1
2
2
1
2
1
1
1
2
1
1
2
2
2
1
2
2
1
1
2
1
2
1
2
2
2
1
2
1
1
2
2
1
2
2
2
2
2
2
2
2
1
2
2
2
2
2
1
1
1
1
1
1
2
2
1
2
1
1
2
2
2
2
1
1
2
2
1
1
2
1
2
1
2
2
2
1
1
1
2
1
2
1
1
2
2
2
1
1
1
2
1
1
2
2
1
2
1
2
1
1
2
2
2
2
2
2
1
1
2
1
1
2
1
1
1
2
2
1
1
2
2
2
1
1
1
2
1
1
2
1
2
1
2
2
1
2
2
2
1
1
2
1
2
1
2
1
2
2
2
1
2
1
1
2
2
1
2
2
2
1
2
1
1
1
2
2
2
1
2
2
1
2
1
1
1
1
1
1
2
1
2
1
2
2
1
2
1
1
2
2
1
1
1
1
1
1
2
1
2
1
1
2
1
2
2
2
1
1
2
1
2
2
1
1
1
1
2
2
1
1
1
1
1
2
1
1
1
1
1
1
2
1
1
1
1
1
2
1
2
2
1
1
1
1
2
1
1
2
1
2
2
1
1
2
1
2
2
2
1
1
1
2
2
1
2
2
1
1
2
2
2
2
1
1
1
2
1
2
2
2
2
1
1
1
2
1
1
2
2
1
2
1
2
2
1
1
1
2
2
1
2
2
1
1
2
2
1
2
1
2
2
1
1
2
2
1
2
2
2
2
1
2
1
2
1
1
2
1
2
2
1
2
1
1
2
1
1
1
1
1
2
1
2
2
2
1
1
2
2
1
1
2
1
2
1
1
1
2
1
1
1
2
1
1
1
1
1
1
2
2
1
1
1
1
2
1
1
2
2
2
1
1
2
1
1
2
1
1
1
2
1
1
2
1
1
2
2
2
1
2
2
2
2
2
1
2
2
2
1
2
2
1
2
2
2
2
1
1
1
2
1
2
2
1
1
1
1
1
2
1
2
2
1
2
1
2
1
2
2
2
1
2
2
1
1
1
2
1
2
1
2
1
2
2
2
2
2
1
1
1
2
2
2
2
2
1
1
2
2
1
2
2
1
2
2
2
2
2
2
2
1
2
1
2
2
2
1
2
1
1
1
1
2
2
1
2
2
1
1
1
2
1
2
1
2
2
1
1
1
2
1
2
1
1
1
2
1
2
2
2
1
1
2
2
1
1
2
1
2
1
2
2
1
2
1
2
1
2
2
1
2
2
1
2
1
1
1
2
1
2
2
1
1
2
2
1
2
2
1
1
2
2
1
2
1
2
1
2
1
1
2
1
1
1
1
1
1
2
1
1
2
1
1
2
2
1
2
2
1
2
1
1
2
1
1
2
1
2
1
2
1
2
2
1
2
2
1
1
1
2
1
1
2
2
1
1
2
2
2
2
2
1
1
2
2
2
1
1
1
2
2
1
1
2
2
1
2
1
2
2
2
1
1
2
1
2
2
2
2
1
2
2
1
1
1
1
2
2
1
1
1
1
1
1
1
2
1
2
1
2
1
1
1
1
2
2
2
1
2
2
1
2
1
2
2
2
1
1
1
2
2
2
1
2
2
1
2
1
1
1
2
1
2
2
1
2
2
1
2
1
1
2
1
1
1
1
1
2
2
2
1
2
2
2
2
2
2
1
2
2
2
2
1
2
1
1
2
2
2
1
2
2
2
1
1
2
1
2
1
1
1
2
2
2
1
1
2
1
2
2
1
2
2
2
1
2
2
2
2
1
2
1
2
1
1
1
2
2
2
2
1
2
1
1
2
1
2
1
1
2
1
1
1
1
2
2
2
2
1
1
2
2
2
2
2
1
1
2
1
2
1
1
2
1
1
2
2
2
2
2
2
1
1
2
1
2
1
1
1
1
2
2
1
2
1
2
2
2
2
1
2
1
2
2
1
1
2
2
1
1
1
1
2
2
2
1
1
1
2
2
1
1
1
2
1
2
2
2
2
2
2
2
2
2
1
2
1
1
2
2
1
1
2
2
1
2
2
2
2
1
1
2
2
2
2
1
1
1
1
1
2
1
2
2
1
2
1
1
2
1
2
2
2
1
1
2
2
1
2
1
1
1
1
2
2
2
1
2
2
1
2
1
2
2
2
2
2
2
1
2
1
2
1
2
1
2
2
2
2
2
1
2
1
2
1
2
2
1
1
2
1
2
1
1
2
1
1
1
1
1
1
1
1
2
2
1
2
2
2
2
2
1
1
1
1
2
2
1
2
2
1
1
1
1
1
1
2
1
1
1
1
2
1
2
1
2
1
1
2
2
1
1
1
2
2
2
2
1
1
2
2
2
1
1
1
2
1
2
1
1
2
1
1
2
1
2
2
2
1
1
1
2
2
2
2
1
1
2
1
1
1
1
1
1
2
2
1
1
2
1
2
2
2
1
2
2
2
1
1
1
1
1
2
1
1
1
1
2
2
2
1
1
2
2
1
2
1
2
1
1
1
1
2
2
1
1
2
1
2
1
2
2
2
2
1
1
2
2
1
2
1
1
0
0
0
0
0
1
0
0
1
1
0
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
0
1
0
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
1
0
1
0
1
1
1
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
1
1
0
0
0
1
0
1
0
1
1
1
1
1
0
1
0
0
0
1
0
0
0
1
1
1
1
0
1
0
0
1
0
1
1
0
1
0
1
0
1
1
0
1
0
1
0
1
1
0
1
0
0
0
1
0
1
0
0
0
1
1
1
0
0
1
1
0
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
0
1
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
0
1
1
0
1
1
1
1
1
0
1
0
1
0
1
0
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
0
1
1
0
0
1
1
0
1
0
1
1
1
1
1
1
1
1
0
1
1
1
0
1
0
0
0
1
1
0
0
0
1
1
1
1
1
0
0
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
0
1
1
1
0
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
1
0
0
1
1
1
0
1
1
1
1
0
0
1
1
1
1
1
0
0
0
1
0
0
1
0
0
0
0
0
1
0
1
0
0
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
1
1
1
1
0
0
0
0
1
1
0
1
0
1
0
1
1
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
1
1
0
1
0
0
0
0
0
1
1
1
1
1
0
0
1
0
1
0
1
0
1
0
0
0
0
0
1
0
0
1
1
1
0
1
1
0
1
1
1
0
0
0
0
1
1
0
0
1
1
1
0
1
1
0
0
0
0
1
1
0
1
0
1
0
1
0
1
0
0
1
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
0
0
0
1
0
0
1
1
1
0
1
1
1
0
1
0
1
1
1
1
1
0
0
1
1
0
1
0
0
0
0
1
1
0
1
1
0
1
1
0
1
1
0
1
1
1
0
1
0
0
1
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
1
0
0
1
0
1
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
0
1
1
1
1
1
0
0
0
0
0
1
1
0
1
1
0
1
1
1
0
1
1
1
0
0
0
0
0
0
1
0
1
0
1
1
1
1
1
0
1
0
0
0
0
0
1
0
0
1
1
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
0
0
1
0
0
1
0
0
1
1
0
1
0
0
0
1
1
1
1
1
0
0
1
1
0
1
0
0
0
1
0
1
1
0
0
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
0
1
0
0
0
1
1
0
1
0
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
1
0
1
0
1
0
1
0
0
1
1
1
0
0
0
1
0
0
1
0
1
1
1
1
1
0
0
0
0
1
0
1
0
0
0
1
1
1
0
0
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
0
1
1
1
0
1
0
1
0
1
0
0
0
0
1
0
0
1
0
0
1
1
1
0
1
1
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
0
0
0
0
0
1
0
0
0
1
1
1
1
1
0
0
0
1
0
0
0
1
0
1
1
0
1
0
1
1
0
1
0
0
0
1
1
0
1
1
1
0
1
1
1
1
0
1
0
1
0
0
1
0
1
0
0
0
0
0
1
1
0
0
0
1
0
0
1
1
1
1
1
0
1
0
0
1
1
1
0
1
0
0
1
0
1
1
0
0
1
0
1
0
1
1
0
0
1
1
0
0
0
0
0
0
1
0
1
0
1
1
1
1
0
1
0
0
0
0
1
0
1
1
1
0
0
1
0
1
1
1
0
1
0
0
1
1
0
0
1
0
1
1
0
0
0
1
1
0
0
0
1
0
1
1
1
0
0
0
1
0
1
0
1
0
0
0
0
1
1
0
1
1
1
1
0
0
1
0
1
0
0
0
0
1
0
0
1
0
0
1
0
1
1
0
1
0
0
0
0
0
1
1
0
1
0
1
1
0
0
1
0
1
0
0
1
1
0
0
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
1
0
0
1
0
0
1
0
1
1
0
0
1
0
0
1
0
0
0
0
1
1
1
0
0
1
0
0
0
1
1
1
0
0
0
0
0
1
1
0
1
0
0
1
0
0
1
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
1
0
0
1
0
1
1
0
1
0
1
1
1
1
0
1
0
0
1
0
1
1
1
1
0
1
0
0
1
1
1
1
0
1
1
0
0
0
1
1
0
1
0
0
1
1
1
1
0
0
1
0
1
0
0
1
0
1
1
0
1
1
1
0
1
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
0
1
0
0
0
0
1
1
0
0
0
1
0
1
1
1
0
0
1
1
0
0
1
1
0
0
0
0
1
0
0
1
1
1
0
1
0
1
1
1
0
1
1
1
1
0
1
1
1
0
1
0
1
0
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
0
0
1
0
0
0
1
1
0
0
1
1
1
1
0
1
1
1
1
0
1
1
0
1
1
1
0
0
0
1
1
1
0
1
0
1
1
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
0
1
0
1
1
1
0
1
1
1
1
1
1
0
1
1
1
0
1
1
1
0
1
0
0
0
1
0
1
0
1
1
1
0
1
0
0
1
1
1
1
1
0
0
1
1
1
1
1
1
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
1
1
0
1
1
0
0
0
1
1
1
1
1
1
1
0
0
1
1
1
1
1
0
1
0
0
0
1
1
1
0
0
0
0
0
1
1
0
1
1
0
0
1
0
0
1
0
0
0
0
1
1
1
0
0
0
1
1
0
1
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
0
1
0
1
0
1
0
0
1
1
1
0
1
0
1
0
1
1
1
0
0
0
1
0
1
0
1
1
0
1
0
1
0
0
0
1
0
0
1
1
0
0
0
0
0
1
1
0
0
1
1
1
0
1
1
1
1
0
0
0
1
1
1
1
0
1
1
1
1
0
1
0
1
0
0
1
0
1
1
0
0
1
0
1
1
1
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
1
1
0
1
0
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
0
0
0
1
0
1
1
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
1
1
1
0
1
0
1
1
0
0
0
0
1
1
1
0
1
1
1
0
1
0
1
1
0
0
1
0
0
0
0
1
1
1
1
1
0
0
1
0
0
0
1
0
1
0
1
0
0
1
0
0
1
0
1
1
1
1
0
1
0
0
1
1
1
1
0
0
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
0
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
0
0
1
0
1
1
1
0
1
0
0
0
0
0
0
1
0
1
1
1
1
1
0
0
1
0
1
1
1
0
1
0
1
1
1
1
1
0
1
0
0
0
0
0
1
1
0
1
0
0
0
1
0
1
1
1
1
0
1
1
1
1
0
1
1
0
1
0
1
1
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
1
0
0
0
0
1
1
1
1
0
1
0
1
1
0
0
0
1
1
0
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
1
0
1
0
0
1
0
1
0
0
0
0
0
1
1
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
1
0
0
0
1
1
1
1
1
0
1
0
0
1
0
1
1
0
1
1
0
0
1
1
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
1
0
1
0
0
1
0
0
1
0
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
1
0
1
0
1
1
1
1
0
1
0
1
0
1
1
0
1
1
0
1
1
0
1
0
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
1
1
0
1
1
1
1
0
1
1
1
0
0
1
1
0
1
1
0
0
1
0
1
0
0
1
1
0
0
1
1
0
1
1
1
0
0
0
1
1
0
1
1
0
0
1
1
1
0
0
1
0
0
1
0
1
1
0
1
1
1
1
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
0
0
1
0
0
0
0
0
0
1
1
0
0
1
0
0
1
0
1
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
0
1
1
0
0
1
1
1
1
0
0
0
0
1
1
1
0
0
0
1
0
0
0
0
1
0
1
1
0
0
0
1
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
1
1
1
0
1
1
1
0
1
0
1
0
0
0
1
1
0
1
1
0
0
1
1
0
1
1
1
1
0
1
0
1
1
0
0
1
0
1
1
1
1
1
1
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
1
1
1
0
0
1
0
0
0
0
0
0
0
1
0
1
0
0
0
1
1
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
0
1
1
0
1
0
0
1
1
1
0
1
1
0
0
1
1
0
0
1
0
1
0
0
0
1
1
1
0
1
1
0
1
0
1
0
1
1
1
1
0
1
1
0
0
1
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
1
1
1
1
1
0
0
0
0
1
0
0
1
0
1
0
0
1
0
1
1
1
0
0
0
1
1
1
0
1
0
0
1
1
0
0
1
1
0
0
1
0
0
1
1
0
0
1
1
1
1
0
1
1
0
0
0
1
1
1
1
0
1
1
1
0
1
0
1
0
0
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
0
1
0
0
1
0
0
0
1
0
0
0
1
0
0
1
0
1
0
0
1
1
0
1
0
1
0
1
0
0
0
0
0
1
0
1
0
1
1
1
0
1
1
1
0
1
1
1
1
0
0
0
0
1
1
0
1
1
1
0
0
1
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
0
1
1
0
0
1
1
0
1
1
1
1
1
0
0
0
1
0
0
0
1
0
1
1
1
1
0
1
1
0
1
0
1
1
1
1
1
0
1
1
0
1
0
0
0
1
0
1
1
1
0
1
0
0
0
1
1
1
0
0
1
0
0
0
1
0
0
1
1
0
1
0
0
0
0
0
1
1
1
1
1
1
1
0
1
0
1
0
1
1
1
0
1
1
0
0
1
0
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
0
0
1
1
1
0
1
1
0
1
0
0
0
0
0
0
1
1
0
0
1
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
1
1
0
0
0
1
1
0
0
0
0
1
1
0
0
1
1
0
1
0
0
1
1
1
1
0
1
1
0
1
0
1
1
0
0
0
0
0
0
0
0
1
0
1
1
0
1
0
1
0
1
1
1
1
1
0
1
1
0
0
0
1
1
1
1
0
0
0
1
1
0
1
0
1
0
1
1
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
1
1
0
1
1
1
0
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
0
1
0
1
1
0
0
0
0
0
1
1
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
0
1
1
0
0
0
0
0
1
0
0
1
1
1
1
0
1
0
0
0
1
1
0
1
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
1
0
1
0
0
1
1
0
1
1
0
0
0
0
1
1
1
1
0
0
1
0
0
0
0
0
0
1
0
0
1
1
1
1
0
0
1
0
0
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
0
1
0
1
1
1
0
1
1
1
0
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
1
1
1
0
1
0
0
0
1
1
0
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
1
1
0
1
0
1
0
0
0
0
0
1
0
0
1
1
1
1
1
0
0
0
0
0
1
0
0
1
1
0
1
1
0
1
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
0
0
1
0
1
1
0
1
0
1
0
0
0
0
1
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
0
1
0
1
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
1
0
0
1
1
1
0
1
1
1
0
0
1
0
0
1
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
0
1
1
0
1
1
0
1
1
1
1
0
1
1
0
0
1
0
0
0
0
1
1
0
0
1
1
0
1
1
0
1
0
1
1
0
1
1
1
1
1
1
0
0
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
0
0
0
1
0
0
1
0
1
0
0
1
1
0
0
0
1
1
1
1
1
1
1
1
1
0
1
0
1
1
0
0
1
0
0
1
1
1
1
1
1
1
0
0
1
0
0
1
1
0
1
1
1
0
0
0
0
1
0
1
0
1
1
1
1
0
1
0
1
1
0
0
0
1
0
0
0
1
1
1
1
1
0
0
1
1
0
0
0
0
0
1
0
1
1
0
0
1
0
0
1
1
0
1
0
1
1
0
1
0
0
1
1
1
0
0
1
1
1
0
0
1
0
1
1
0
1
0
1
1
0
0
0
0
1
0
0
1
0
1
0
1
0
1
0
0
0
1
1
1
1
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
1
0
0
1
0
0
1
0
0
0
0
0
1
1
0
0
0
1
0
1
1
0
1
1
1
0
0
0
1
0
1
0
1
0
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
0
1
0
1
0
0
1
1
1
0
1
1
1
1
0
1
0
1
0
1
0
0
0
0
0
1
0
1
0
0
1
0
0
1
0
1
1
1
0
1
1
1
0
1
0
0
1
1
0
1
0
1
0
0
0
0
1
0
0
0
1
0
0
0
0
1
1
1
1
1
1
1
1
1
0
1
0
0
0
1
0
1
0
1
0
1
1
0
0
1
1
1
1
0
1
0
1
0
0
0
0
1
0
1
1
0
0
1
1
0
0
1
0
1
1
1
1
0
1
1
1
0
1
0
1
0
1
0
0
0
1
0
0
1
1
0
1
0
0
1
1
1
0
1
1
0
0
0
1
1
1
0
0
0
1
1
1
1
1
0
1
0
0
1
0
0
1
0
1
0
0
0
0
1
0
0
0
1
1
0
1
0
1
0
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
1
1
1
1
1
0
0
1
1
1
1
1
1
0
0
1
1
0
0
1
0
1
0
1
1
0
0
1
1
0
1
1
0
0
0
1
1
1
0
1
1
1
1
0
0
0
0
0
1
0
1
1
1
1
0
1
0
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
0
0
1
0
0
1
0
0
1
0
0
0
1
0
1
0
1
0
1
1
1
0
0
1
0
1
0
1
1
0
0
0
1
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
1
0
1
1
1
0
0
1
0
1
0
0
0
1
0
1
0
0
1
0
0
1
1
0
0
1
1
1
0
0
0
1
0
0
1
1
1
0
1
1
0
1
1
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
1
1
0
1
1
1
1
0
1
1
0
1
0
1
0
1
1
1
0
1
1
0
1
1
0
0
0
1
0
0
1
1
1
0
0
0
1
0
0
0
1
0
0
1
1
0
1
0
0
0
0
1
1
0
0
0
1
1
0
0
1
1
1
1
1
0
0
1
0
0
1
0
1
1
1
1
0
1
0
0
0
1
1
0
1
1
0
0
1
1
0
0
0
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
1
0
1
0
1
1
0
0
0
1
0
0
0
0
1
1
0
0
1
0
1
1
0
0
0
0
0
0
1
0
0
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
1
0
1
0
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
1
0
0
1
0
1
0
1
1
1
1
1
1
0
0
0
0
1
1
0
1
1
0
0
1
0
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
0
1
0
0
0
1
0
1
1
0
0
0
0
1
0
0
1
1
1
0
0
0
1
1
0
0
1
0
0
1
0
1
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
1
0
1
0
0
1
1
1
0
0
0
1
0
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
1
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
0
1
1
0
0
1
0
0
0
0
0
1
1
0
0
1
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
1
0
1
0
0
0
0
0
1
1
0
1
0
0
1
0
1
0
1
1
1
1
0
0
0
1
0
0
0
0
1
1
1
0
1
1
1
1
0
0
0
1
0
0
1
0
1
1
1
1
0
1
0
0
0
0
1
1
1
1
1
1
1
1
1
0
1
0
0
0
0
0
0
1
1
1
1
1
0
1
1
0
0
0
1
1
1
0
0
0
1
0
1
1
1
0
1
1
0
0
1
1
1
0
1
1
1
1
1
1
0
1
0
0
0
0
0
1
0
1
0
0
1
1
0
1
1
1
0
0
0
1
0
1
1
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
1
0
1
1
0
1
1
0
0
1
1
0
1
0
0
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
1
0
0
1
1
1
1
1
1
0
1
1
1
0
1
1
0
0
1
1
0
0
1
0
0
0
0
0
1
0
0
1
1
0
1
0
1
1
0
1
0
0
0
0
1
0
1
1
0
1
0
0
0
1
1
0
1
1
1
1
1
1
1
0
1
1
1
0
0
1
1
1
1
0
1
1
0
1
1
1
1
0
1
0
0
1
0
1
1
0
1
0
0
0
1
1
0
0
0
0
0
0
1
1
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
1
0
1
1
0
1
0
1
0
0
1
1
0
1
0
0
1
0
0
1
1
0
0
1
0
1
1
1
1
1
0
1
0
0
0
1
0
0
0
1
0
0
1
0
0
0
0
0
1
1
0
1
1
0
0
1
1
0
1
0
0
1
1
1
0
0
0
1
1
0
0
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
0
1
0
1
0
1
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
0
1
1
1
0
0
1
1
0
1
0
1
1
1
0
1
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
0
0
1
1
0
1
1
1
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
1
0
0
0
1
1
0
1
0
1
1
0
0
1
0
1
1
0
0
0
1
0
0
0
0
1
0
1
1
0
0
0
1
1
1
1
1
0
1
1
0
1
1
0
0
1
1
0
0
0
0
1
0
0
1
1
0
0
0
1
0
1
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
0
0
0
0
0
1
1
0
1
1
1
0
0
0
1
0
0
1
1
0
1
1
0
0
1
0
0
1
1
0
1
1
1
0
0
0
1
0
1
1
1
1
0
1
1
1
0
0
0
1
1
1
0
1
1
1
1
1
1
0
0
0
1
1
1
0
1
1
0
0
0
0
1
1
1
1
1
1
1
0
1
0
1
0
1
1
1
0
1
1
1
0
0
1
0
1
0
0
1
1
0
1
0
0
0
0
0
0
1
1
1
0
1
0
1
0
1
1
0
1
0
1
1
1
0
0
1
0
0
0
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
0
1
1
0
0
0
1
1
1
0
0
0
0
0
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
0
1
0
0
0
1
0
0
0
0
0
1
0
0
1
0
1
1
1
0
1
0
0
1
0
1
0
0
1
1
1
0
1
0
0
0
1
1
1
1
0
1
1
1
1
0
0
0
1
0
0
1
0
0
1
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
0
1
1
0
0
0
1
0
0
0
1
1
1
0
0
0
1
0
1
0
0
1
0
1
1
0
1
0
1
0
1
0
0
0
0
1
1
1
0
1
1
0
1
0
0
1
1
0
0
1
0
1
0
0
1
0
1
0
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
1
0
0
1
1
0
1
1
1
0
1
0
0
1
1
1
1
0
0
0
0
0
1
1
1
0
0
1
1
1
1
1
0
0
1
0
1
1
1
1
1
0
0
0
0
0
0
1
0
1
1
1
1
1
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
0
0
0
1
1
0
1
1
0
0
0
1
1
0
0
0
1
0
0
0
1
1
0
1
0
0
1
0
1
1
1
1
0
0
0
1
1
0
0
1
1
1
0
1
0
1
0
1
1
1
1
1
0
1
0
0
0
0
0
1
0
1
1
1
0
1
1
1
0
1
1
0
0
0
1
0
1
1
0
1
1
1
1
0
1
0
0
1
1
1
0
0
0
0
0
1
1
0
1
1
1
1
1
0
1
1
1
1
0
0
1
0
0
0
1
0
0
0
1
0
0
1
1
0
1
0
0
1
0
0
0
0
0
1
0
0
1
0
1
1
1
0
1
1
1
1
1
0
1
1
1
1
0
1
0
1
0
1
0
0
0
1
0
0
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
1
1
0
1
1
1
1
0
1
1
1
1
1
0
1
1
1
0
1
0
1
1
0
1
0
1
1
1
0
1
1
0
1
1
0
0
1
0
1
1
0
0
0
1
1
0
0
1
0
1
1
1
1
0
1
0
1
0
1
1
0
0
1
0
0
0
0
1
1
0
0
1
1
1
0
1
0
0
1
1
0
0
0
0
0
1
1
0
0
1
0
0
1
0
1
1
1
0
1
1
0
0
0
1
1
1
1
1
0
0
0
0
0
0
1
1
1
0
1
0
0
1
1
1
1
1
0
0
1
0
0
1
1
0
0
0
0
1
0
0
1
0
0
0
0
1
1
0
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
0
1
0
0
1
0
1
1
0
1
1
0
1
0
1
1
0
1
1
0
1
0
0
1
1
0
1
1
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
1
0
1
0
0
1
1
1
0
1
0
1
0
0
1
1
1
0
0
0
0
0
1
0
0
1
1
0
1
0
0
1
1
0
0
0
1
0
1
1
0
0
1
1
1
1
1
1
0
1
1
0
0
0
1
1
1
0
1
0
0
0
1
0
0
1
1
0
1
0
1
0
0
0
1
1
0
1
0
1
0
0
0
1
0
1
1
0
0
0
0
0
1
0
0
0
0
0
1
1
0
1
0
0
1
1
1
0
0
0
1
1
0
0
0
1
1
1
1
0
1
0
1
1
1
0
0
1
1
0
0
1
0
1
0
0
1
0
0
0
1
0
1
0
1
1
1
1
0
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
0
0
0
1
0
0
1
0
1
1
1
1
0
1
0
0
0
0
1
1
1
1
0
1
0
1
1
0
1
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
1
0
1
0
1
1
1
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
0
0
0
0
1
1
0
1
0
1
0
1
0
0
0
0
1
0
1
0
1
1
0
0
1
1
1
0
0
1
0
1
0
1
1
1
1
1
1
1
1
0
0
0
0
1
0
0
0
1
1
1
0
1
0
1
1
1
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
1
0
0
1
1
0
1
1
1
0
1
0
1
0
1
1
0
1
1
0
1
1
1
0
0
1
1
1
0
0
1
0
1
1
1
1
1
0
1
1
1
0
1
1
1
0
0
1
0
0
0
1
0
1
0
1
0
0
0
1
0
0
0
0
0
1
1
1
0
1
0
0
1
1
1
1
0
0
0
1
0
0
0
0
1
0
0
0
1
0
0
1
1
0
0
0
1
0
0
1
0
0
1
1
1
0
1
1
0
0
1
1
1
1
1
1
1
0
0
0
0
1
1
1
0
0
0
1
0
0
1
0
1
1
1
1
0
1
1
0
1
1
1
0
1
0
1
0
1
0
0
0
1
1
0
1
1
1
0
1
0
1
0
1
1
0
1
1
1
0
1
1
0
0
0
0
1
0
1
0
1
0
1
1
1
0
1
1
1
0
0
0
0
1
0
1
0
0
0
1
0
0
1
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
1
1
0
0
0
1
0
1
0
1
0
0
1
0
0
1
0
0
0
1
1
0
1
0
1
0
1
1
0
0
0
1
0
0
0
1
1
1
0
0
0
1
1
0
1
1
0
0
0
1
0
1
1
0
0
1
1
0
1
0
0
0
1
1
0
1
1
1
1
1
1
0
0
1
0
1
0
0
1
1
0
1
0
0
1
0
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
0
1
0
0
1
0
0
0
1
0
0
1
0
1
0
0
0
0
1
0
0
0
1
0
0
0
1
0
1
1
0
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
1
1
0
1
0
0
1
1
0
0
1
1
0
0
1
0
0
1
1
1
0
1
1
1
1
0
1
0
1
0
1
0
0
1
0
1
0
0
1
1
0
0
0
0
0
0
0
1
1
1
0
0
1
1
1
1
0
1
1
1
0
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
1
1
0
0
0
1
0
1
1
0
0
1
1
1
0
0
1
1
0
0
1
0
1
0
1
1
0
1
0
0
1
1
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
0
0
1
1
0
1
1
0
0
0
1
1
1
0
1
1
0
0
1
0
0
1
1
1
1
0
1
1
0
0
0
1
0
0
1
0
1
0
0
1
0
0
0
1
0
1
0
0
1
1
0
1
0
1
1
1
0
0
1
1
1
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
1
1
1
0
0
1
0
1
0
0
1
1
0
1
1
1
0
0
1
1
0
1
1
1
1
0
0
0
1
1
0
1
1
1
1
0
0
0
0
1
1
0
0
0
1
1
0
0
1
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
0
1
1
0
0
1
1
0
1
1
0
1
1
1
1
1
0
0
1
0
0
0
1
0
0
1
0
1
1
0
0
0
1
0
1
1
0
0
0
0
0
1
0
1
0
0
0
1
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
1
0
1
0
0
0
0
0
0
0
0
1
1
0
1
1
1
1
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
0
0
1
0
0
0
0
1
1
0
1
1
0
1
1
0
1
1
0
1
0
1
1
1
0
1
1
0
0
1
0
0
1
1
1
0
1
0
0
1
0
1
1
0
1
1
1
0
0
1
0
1
1
1
1
1
0
1
1
0
0
0
0
1
0
0
0
0
1
1
0
1
1
0
0
1
1
0
0
0
0
1
1
1
1
0
0
1
0
0
0
1
0
0
1
0
1
0
1
0
1
0
1
1
0
0
0
1
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
0
0
0
0
1
1
0
1
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
1
0
0
1
1
1
0
0
1
1
1
0
1
0
0
1
0
0
0
1
1
1
0
0
0
1
0
1
0
0
1
0
1
0
1
0
1
1
0
1
1
1
1
0
0
1
1
1
0
0
0
0
1
0
1
1
1
0
0
1
0
0
1
0
0
1
0
1
0
1
0
1
0
0
1
0
0
1
1
1
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
0
0
1
1
1
0
1
0
1
1
0
0
0
1
0
1
1
0
1
0
0
1
0
1
0
0
0
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
0
1
0
1
1
0
1
1
1
0
1
0
0
0
0
0
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
0
0
1
1
1
0
1
0
0
1
1
1
0
1
1
1
1
1
0
1
0
0
1
1
0
0
1
0
0
0
1
0
0
0
0
1
1
1
0
0
0
1
0
0
1
0
0
1
0
0
1
1
0
1
0
0
0
1
1
0
0
1
1
1
0
1
0
0
1
1
1
1
0
1
0
1
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
0
0
1
1
1
1
0
1
0
1
1
0
1
0
1
1
1
1
0
0
0
1
0
1
0
0
1
0
1
0
1
1
1
0
0
0
1
1
1
0
1
0
0
0
1
0
0
0
1
0
1
0
1
1
1
0
0
0
0
1
1
0
0
1
1
1
0
0
0
1
1
1
0
1
0
0
0
1
0
0
0
0
1
0
1
1
0
0
1
1
1
0
1
0
0
0
1
0
1
1
0
1
1
1
1
0
1
0
0
0
1
0
1
1
1
1
0
1
0
0
0
0
0
1
0
1
1
0
1
0
0
0
0
0
0
1
1
0
1
0
1
0
0
1
0
0
1
1
1
0
1
1
0
1
0
1
1
1
1
0
1
1
0
1
0
1
0
1
1
0
0
0
0
1
1
0
1
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
1
0
0
1
1
0
1
1
1
1
0
0
1
0
0
0
1
1
1
1
1
0
0
1
0
1
0
1
1
1
1
0
0
1
0
0
0
1
1
0
0
1
0
1
0
0
0
0
1
1
0
1
1
0
0
0
0
0
0
1
1
0
1
1
0
0
0
0
0
1
1
1
0
1
1
1
0
0
0
0
0
1
0
1
1
1
1
0
1
1
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
1
0
0
0
1
1
0
1
0
0
0
1
0
0
0
1
0
0
1
1
1
0
1
0
0
1
0
1
0
0
0
0
0
1
1
0
1
0
0
1
1
0
1
1
0
1
0
1
1
1
1
1
1
1
0
1
1
0
1
0
1
0
0
1
1
0
1
0
0
1
1
1
1
0
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
0
1