0
1
mirror of https://git.sb/baoshuo/OI-codes.git synced 2024-11-27 23:16:27 +00:00
OI-codes/S2OJ/1693/data/idiom20.out

146511 lines
286 KiB (Stored with Git LFS)
Plaintext

2
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
3
2
3
3
2
2
3
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
3
3
3
2
2
3
3
3
3
3
2
2
3
2
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
3
2
2
2
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
3
3
3
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
3
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
3
3
3
3
2
3
3
2
3
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
3
3
3
3
2
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
3
2
2
2
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
3
3
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
2
3
2
3
3
2
3
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
2
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
2
3
2
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
3
3
3
3
2
3
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
3
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
2
2
2
3
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
2
3
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
3
3
3
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
3
3
3
2
3
3
2
3
3
3
3
2
3
2
3
3
3
3
2
3
3
3
2
2
3
3
3
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
3
2
3
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
2
2
3
2
2
2
3
2
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
3
3
3
3
3
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
3
2
2
2
3
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
2
2
3
3
2
2
3
3
2
2
3
2
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
3
3
2
2
3
3
2
3
2
3
3
2
2
3
3
2
3
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
2
3
2
3
2
2
3
2
3
3
2
3
3
3
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
2
2
3
3
3
3
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
3
3
2
2
2
3
3
2
3
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
3
2
3
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
3
3
2
2
3
2
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
3
3
2
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
3
2
3
2
2
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
3
3
2
2
2
2
3
3
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
3
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
3
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
2
2
3
3
3
3
2
3
3
3
3
2
2
3
3
3
3
3
3
2
2
3
3
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
3
2
3
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
3
2
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
2
3
2
3
3
3
3
3
3
2
3
3
2
2
3
3
2
2
3
3
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
2
3
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
3
3
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
3
2
3
2
3
3
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
3
3
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
3
3
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
3
3
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
3
2
2
3
3
3
3
3
2
2
3
3
3
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
3
2
2
3
3
2
3
3
3
3
3
3
2
2
3
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
3
3
3
3
2
2
3
3
3
3
3
3
2
3
3
3
3
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
3
2
3
3
2
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
3
3
3
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
2
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
3
2
3
2
2
3
2
3
2
2
3
3
3
2
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
3
3
3
3
3
2
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
2
3
3
3
2
3
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
3
2
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
2
3
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
2
2
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
3
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
3
3
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
3
2
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
3
3
2
2
3
2
3
2
2
3
3
3
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
2
2
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
2
3
3
3
2
3
2
2
3
2
3
2
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
2
3
3
3
3
3
3
3
3
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
3
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
3
2
3
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
3
3
3
3
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
3
3
3
3
2
3
3
3
3
2
3
3
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
2
3
3
3
2
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
3
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
3
2
3
3
2
2
2
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
3
2
2
3
3
3
2
3
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
3
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
2
2
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
2
3
3
3
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
3
3
3
3
3
2
2
3
3
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
3
2
2
3
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
3
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
3
2
3
3
3
3
2
3
3
2
3
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
3
3
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
3
3
3
2
2
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
3
3
2
3
2
2
2
3
3
3
3
2
2
3
3
3
3
3
3
2
3
3
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
3
3
3
2
2
2
2
3
3
3
2
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
2
3
3
3
3
3
3
3
2
3
3
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
3
3
3
3
2
2
3
2
3
2
2
3
2
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
3
2
3
3
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
3
2
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
3
2
2
3
2
3
3
3
3
2
3
2
3
3
3
2
2
3
2
3
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
3
3
3
3
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
2
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
2
3
3
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
2
3
3
3
3
3
3
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
3
2
2
3
2
3
3
2
2
3
3
3
2
2
3
3
3
2
2
2
2
3
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
3
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
3
3
3
2
2
3
2
2
3
3
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
3
3
3
2
2
2
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
2
3
2
3
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
2
2
2
3
2
3
3
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
3
2
2
2
2
3
3
3
3
2
3
2
2
3
3
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
2
3
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
3
3
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
2
3
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
3
3
3
2
3
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
3
2
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
3
3
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
3
3
2
3
3
3
3
3
3
3
3
2
3
3
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
3
3
3
2
3
3
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
3
3
2
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
3
3
2
2
3
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
3
3
2
3
3
3
3
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
2
2
2
3
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
3
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
3
3
3
2
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
3
3
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
2
3
3
3
2
3
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
2
3
3
3
3
2
3
3
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
3
2
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
3
2
3
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
2
2
3
3
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
3
3
3
3
2
3
2
2
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
3
2
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
2
3
2
3
3
2
3
3
2
2
3
3
2
3
3
3
2
3
3
3
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
3
2
2
3
3
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
3
3
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
3
2
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
3
3
2
3
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
2
3
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
3
2
3
3
3
3
2
3
2
3
3
2
3
3
2
2
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
3
2
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
2
3
3
2
2
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
2
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
3
3
3
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
2
3
2
3
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
3
2
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
3
3
3
2
3
3
2
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
2
2
3
3
3
3
3
3
3
2
3
3
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
2
2
3
3
3
3
3
2
3
3
3
3
2
2
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
2
3
3
3
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
3
2
3
3
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
3
3
3
3
2
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
3
3
3
3
3
3
3
2
2
3
3
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
3
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
3
3
3
2
2
3
2
3
2
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
3
3
3
2
2
3
2
2
3
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
3
3
3
3
2
3
3
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
2
3
3
3
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
2
3
3
2
3
3
3
3
3
3
3
2
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
3
2
3
3
3
3
2
2
3
3
3
3
3
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
3
3
3
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
2
2
3
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
3
2
3
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
2
2
3
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
3
2
2
2
3
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
2
3
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
3
3
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
3
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
2
3
3
3
3
3
3
2
3
2
3
2
3
3
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
3
3
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
3
3
3
3
3
3
3
2
2
3
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
3
2
2
3
3
3
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
3
2
2
3
3
2
3
3
3
3
3
2
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
3
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
3
3
3
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
3
3
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
2
3
3
2
3
3
3
3
2
3
3
3
3
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
3
3
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
3
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
3
2
3
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
2
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
3
2
3
3
3
3
2
3
3
2
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
2
3
2
2
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
3
2
2
3
3
3
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
3
2
3
3
3
2
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
3
2
3
3
2
3
3
3
3
3
2
3
3
2
2
2
3
3
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
3
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
2
3
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
3
3
3
3
2
2
3
3
3
3
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
3
3
2
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
3
3
2
3
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
2
3
2
3
3
2
3
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
3
3
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
3
2
2
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
3
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
3
2
3
3
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
3
2
3
3
3
2
2
3
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
2
3
2
2
2
3
3
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
3
2
2
3
2
2
2
2
3
3
3
2
3
3
3
2
2
3
2
3
2
2
3
3
2
3
3
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
3
3
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
3
3
3
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
3
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
3
3
2
3
2
3
3
3
3
3
2
2
3
2
3
2
2
3
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
3
3
3
3
3
3
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
3
3
2
2
3
2
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
3
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
2
3
3
3
3
3
3
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
3
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
3
2
3
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
3
3
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
2
2
3
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
3
2
3
3
3
3
2
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
2
3
3
2
3
3
3
2
2
3
3
3
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
2
3
3
2
3
3
3
2
3
3
2
3
3
3
2
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
2
3
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
3
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
3
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
2
3
3
3
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
3
2
3
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
2
3
2
3
3
2
2
3
3
2
2
3
3
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
3
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
3
3
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
2
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
3
2
3
2
2
3
3
2
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
3
3
3
2
2
3
2
2
3
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
3
3
2
3
3
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
2
3
2
3
3
2
3
2
3
2
3
3
3
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
2
3
3
2
3
3
2
2
3
2
2
3
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
2
2
2
3
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
3
3
3
3
3
3
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
3
3
3
2
3
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
2
3
3
2
3
2
2
2
2
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
3
3
3
3
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
3
2
3
2
3
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
3
3
3
3
3
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
3
2
2
3
3
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
3
2
3
3
2
2
2
2
3
2
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
3
3
3
3
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
2
3
2
3
3
2
2
3
2
2
3
2
3
2
2
3
3
2
2
3
2
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
3
3
2
3
3
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
3
3
2
2
3
3
3
2
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
3
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
3
3
3
2
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
3
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
3
3
2
3
2
2
3
3
3
3
2
3
3
3
3
3
3
3
2
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
3
3
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
3
2
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
3
3
3
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
2
2
3
2
2
2
2
3
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
3
3
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
3
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
2
2
3
3
3
2
3
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
3
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
2
3
3
3
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
3
3
3
2
2
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
2
2
3
3
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
3
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
3
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
3
3
3
2
2
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
3
2
3
3
2
2
3
2
2
3
3
3
2
3
2
2
2
2
3
3
3
2
2
3
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
3
3
3
3
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
3
3
2
2
2
2
3
3
3
3
2
2
2
2
3
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
3
2
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
2
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
3
2
3
3
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
2
2
2
2
3
3
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
3
3
3
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
2
3
3
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
3
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
2
2
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
3
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
3
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
2
3
3
2
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
3
3
3
3
3
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
3
2
2
2
3
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
3
3
3
3
2
3
3
2
3
2
2
2
2
2
2
3
2
2
3
3
3
2
3
3
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
3
3
3
3
3
2
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
3
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
2
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
3
3
2
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
2
3
2
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
3
3
2
3
3
3
2
3
3
2
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
3
3
3
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
3
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
3
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
2
3
2
3
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
3
3
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
3
2
3
3
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
2
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
3
3
3
2
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
3
2
3
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
3
2
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
2
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
3
3
3
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
3
2
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
3
3
3
2
3
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
3
3
3
3
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
2
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
3
3
3
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
3
3
2
2
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
2
3
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
3
2
3
3
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
3
2
3
3
3
2
2
3
3
3
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
3
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
3
3
2
3
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
3
3
2
3
2
2
3
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
3
2
2
3
2
2
3
3
2
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
3
3
2
2
3
3
2
2
2
2
2
3
2
2
2
2
3
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
3
3
3
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
2
3
2
3
3
3
3
2
3
2
3
2
3
3
3
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
3
3
3
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
2
3
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
3
3
2
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
3
3
3
3
2
3
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
3
3
2
2
3
3
2
3
3
3
2
2
3
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
2
3
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
3
2
2
3
3
3
2
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
3
3
2
3
2
3
3
3
3
2
3
3
3
3
2
3
3
2
3
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
2
3
2
2
3
3
3
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
2
3
3
2
3
2
2
2
3
2
2
3
2
3
3
3
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
3
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
3
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
3
3
2
2
3
2
2
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
2
3
2
3
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
3
3
3
3
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
3
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
2
3
3
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
2
3
3
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
3
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
3
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
3
3
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
3
2
2
2
3
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
3
3
3
3
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
3
3
3
3
3
3
3
3
2
3
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
3
3
3
3
2
3
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
2
2
3
2
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
3
2
3
2
2
3
2
3
3
3
2
3
2
2
3
3
3
3
3
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
2
3
2
3
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
3
2
3
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
3
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
2
3
2
3
2
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
2
3
3
2
2
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
3
3
3
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
3
2
2
3
3
2
3
3
3
3
2
3
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
2
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
3
3
2
2
2
3
3
2
3
3
2
3
3
2
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
3
2
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
3
2
2
3
3
3
3
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
3
3
2
2
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
2
3
3
3
3
2
3
3
2
3
3
3
3
2
3
2
2
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
2
2
3
3
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
2
3
2
2
3
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
3
2
2
3
2
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
3
3
3
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
3
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
3
2
3
2
2
3
2
3
3
3
3
2
2
2
2
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
3
3
2
2
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
3
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
3
2
3
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
2
3
2
2
3
3
2
2
2
3
3
2
3
2
2
2
3
3
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
3
2
3
3
3
3
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
3
2
3
2
2
2
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
2
3
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
2
3
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
2
3
3
2
3
3
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
3
3
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
3
2
2
3
3
2
3
2
2
3
2
2
3
3
2
3
2
2
3
2
2
2
2
3
2
2
2
2
3
3
3
2
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
2
3
3
3
2
2
3
2
3
2
3
2
3
3
2
3
2
3
3
2
3
3
3
3
2
2
2
2
3
3
3
3
2
3
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
3
2
3
3
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
3
3
3
2
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
3
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
2
2
3
2
2
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
3
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
3
3
3
3
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
3
2
3
2
2
3
3
3
3
3
2
3
3
2
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
3
3
2
3
3
3
3
3
2
3
3
2
2
2
2
3
2
3
3
3
3
2
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
3
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
3
3
3
3
2
2
2
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
3
3
2
3
2
3
3
2
2
3
3
2
3
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
3
3
3
3
3
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
3
2
2
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
3
2
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
3
3
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
2
2
3
2
3
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
2
3
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
2
3
3
3
3
3
3
2
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
3
3
2
2
3
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
3
3
3
2
2
3
3
3
3
2
2
3
2
2
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
2
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
2
2
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
3
3
2
2
2
3
2
2
3
3
3
2
3
3
3
3
2
3
2
3
2
3
3
3
3
2
3
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
2
3
2
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
3
3
2
3
3
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
3
3
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
3
3
3
2
2
2
2
3
2
3
3
2
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
2
3
3
3
3
2
2
3
3
2
3
2
2
2
3
2
2
3
3
2
2
3
2
2
3
3
3
3
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
3
3
3
3
2
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
3
3
3
3
2
3
3
2
2
2
2
3
3
3
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
2
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
2
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
2
2
3
2
2
3
3
3
3
2
3
2
2
3
2
2
2
3
2
3
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
2
3
3
3
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
3
2
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
3
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
3
3
2
3
3
2
2
2
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
3
2
2
2
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
2
2
3
3
2
3
3
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
3
2
2
3
3
3
3
3
2
2
3
3
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
3
2
2
3
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
3
3
3
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
3
2
3
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
2
3
2
3
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
3
2
2
3
3
3
3
2
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
3
3
3
2
3
3
3
3
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
3
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
3
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
3
2
3
2
2
3
2
3
3
3
3
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
2
3
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
3
3
2
3
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
3
3
3
3
3
3
2
3
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
3
2
2
3
3
3
2
2
3
3
2
2
3
3
3
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
2
3
2
3
2
2
3
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
3
3
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
2
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
3
2
2
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
2
3
3
3
3
3
3
3
2
2
2
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
3
3
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
3
3
3
2
2
3
2
2
3
2
3
3
2
3
3
3
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
2
2
2
3
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
2
2
2
3
2
2
3
2
3
3
2
2
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
2
3
2
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
3
2
3
3
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
3
2
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
3
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
2
3
3
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
3
2
2
3
2
3
2
2
3
2
3
3
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
2
3
3
3
2
2
3
3
3
3
2
3
3
3
2
2
3
2
3
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
3
3
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
3
3
3
3
3
2
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
3
3
3
3
3
3
3
3
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
3
2
3
3
2
3
2
2
3
2
2
2
3
3
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
2
3
3
3
3
2
3
3
2
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
3
3
2
2
3
3
3
3
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
3
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
3
2
2
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
3
2
3
3
2
2
2
3
2
2
3
3
3
3
2
2
2
2
3
2
2
2
2
3
2
3
2
3
3
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
2
3
2
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
3
3
3
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
3
3
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
3
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
3
3
3
3
3
2
2
3
3
2
2
2
2
3
3
3
3
3
2
2
2
2
2
3
3
3
3
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
3
3
2
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
3
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
3
2
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
3
3
3
3
2
3
3
3
2
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
3
2
3
3
3
3
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
3
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
3
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
3
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
3
2
3
3
3
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
2
3
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
3
2
3
2
3
3
2
3
3
3
3
3
3
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
2
3
2
2
3
3
3
2
3
3
2
3
3
2
2
3
2
2
3
2
2
2
3
3
3
2
3
2
3
3
2
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
3
3
3
2
2
3
3
3
3
3
3
2
2
2
3
2
2
3
3
2
2
2
3
3
3
2
3
3
2
2
3
3
3
3
3
2
3
2
3
3
3
3
2
2
3
3
2
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
3
3
3
3
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
2
3
3
2
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
3
2
2
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
3
2
3
3
3
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
3
3
2
3
3
2
2
3
2
2
3
2
3
3
3
3
2
2
3
2
2
2
2
3
3
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
3
2
2
3
3
3
3
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
3
3
3
2
2
2
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
3
3
3
3
2
2
3
3
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
3
3
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
3
2
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
3
3
3
2
3
2
2
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
3
2
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
3
2
3
3
3
2
3
3
2
3
2
2
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
3
3
3
3
2
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
3
3
3
3
2
3
3
2
2
2
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
3
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
3
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
3
2
2
3
3
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
3
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
3
3
3
3
3
3
3
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
2
2
3
2
2
3
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
2
3
2
2
2
2
2
3
3
3
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
3
2
2
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
2
3
3
2
3
2
2
3
3
2
2
3
3
3
2
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
3
2
3
3
2
3
3
3
3
3
3
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
2
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
3
2
3
3
3
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
3
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
3
2
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
3
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
3
3
2
2
3
2
3
2
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
2
3
3
2
2
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
3
2
2
3
2
3
2
2
3
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
3
2
3
2
3
2
2
3
3
3
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
2
3
3
3
2
2
3
2
2
2
2
3
3
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
2
2
3
3
2
2
2
3
3
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
3
2
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
3
3
3
2
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
3
2
2
3
2
2
3
2
2
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
3
3
3
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
2
2
3
2
3
3
3
3
2
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
2
3
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
3
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
3
3
3
2
3
3
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
2
3
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
3
2
3
3
3
3
2
3
2
2
2
2
2
2
3
2
2
3
3
2
3
3
3
3
2
2
3
3
3
2
2
2
3
3
2
3
3
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
3
2
2
3
3
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
3
3
3
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
3
2
2
3
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
2
3
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
3
2
2
3
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
3
3
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
3
3
2
2
3
3
2
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
3
3
2
2
2
3
2
3
3
3
3
3
2
2
3
2
3
2
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
3
2
3
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
2
3
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
2
2
3
3
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
3
2
3
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
3
3
3
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
3
2
2
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
3
3
2
3
2
3
2
2
3
3
3
3
3
2
3
3
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
3
3
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
3
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
3
3
3
2
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
3
3
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
3
3
2
3
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
3
2
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
3
2
3
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
3
2
2
3
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
3
3
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
3
2
2
3
3
3
3
3
3
3
3
2
3
3
2
2
2
3
2
3
2
3
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
3
3
3
2
2
3
2
2
3
3
3
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
2
3
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
3
2
3
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
2
3
3
2
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
3
3
3
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
3
3
2
2
3
2
2
3
3
2
3
3
3
3
3
3
3
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
3
3
2
3
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
3
2
2
3
3
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
3
2
3
3
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
2
2
2
3
3
2
3
3
2
3
3
3
2
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
3
3
2
2
3
3
3
2
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
2
3
2
3
2
3
3
2
3
3
3
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
2
2
2
3
2
3
3
2
3
2
3
3
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
3
2
3
2
2
2
3
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
2
3
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
2
3
2
2
3
2
3
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
2
3
3
2
2
2
3
3
3
2
2
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
3
3
2
3
3
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
3
2
2
2
3
3
3
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
3
3
2
2
3
3
2
2
3
3
3
2
2
2
2
2
3
2
3
3
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
3
3
3
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
3
2
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
3
2
3
3
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
3
2
3
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
3
2
2
2
2
3
3
3
2
2
3
2
2
2
3
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
3
2
2
3
2
3
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
3
3
3
3
2
2
2
2
3
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
3
3
2
2
3
2
3
3
3
3
3
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
3
3
2
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
3
2
3
3
3
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
3
3
3
2
3
3
3
3
3
2
3
3
3
3
3
3
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
3
2
2
3
2
3
2
3
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
3
3
2
2
3
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
3
3
3
2
3
3
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
3
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
2
2
2
2
2
3
2
2
3
2
2
3
3
2
3
2
2
3
3
3
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
3
3
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
3
2
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
3
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
3
2
2
3
2
3
3
3
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
2
2
3
2
2
3
3
2
3
2
2
2
2
2
3
3
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
3
2
3
3
3
3
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
2
2
2
3
2
3
3
3
3
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
3
3
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
3
3
2
3
2
3
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
2
3
3
2
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
3
3
2
2
3
2
2
3
2
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
3
3
3
2
3
3
3
2
2
2
3
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
3
2
2
2
2
3
3
3
2
2
3
3
3
3
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
3
2
2
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
2
3
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
3
3
3
3
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
2
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
3
2
2
2
2
3
3
3
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
3
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
2
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
3
3
2
2
3
2
2
2
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
3
2
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
2
3
3
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
2
3
3
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
3
2
2
3
2
2
2
3
3
3
3
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
3
2
3
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
2
3
2
2
2
3
2
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
3
2
3
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
2
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
3
2
3
3
3
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
3
2
2
2
3
2
3
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
2
2
2
3
3
3
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
2
3
3
3
3
2
2
3
3
3
2
3
3
3
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
2
3
3
2
3
3
3
3
3
2
2
3
3
3
2
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
3
3
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
2
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
2
3
3
3
3
2
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
2
3
2
3
2
2
3
3
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
2
3
3
2
3
3
2
2
3
3
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
2
3
3
3
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
3
3
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
2
3
3
2
3
2
2
3
2
3
2
2
2
2
3
3
3
3
3
2
2
3
3
3
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
2
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
3
2
2
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
3
3
3
3
2
3
2
2
3
2
3
3
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
3
2
3
2
3
3
3
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
3
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
2
3
3
3
3
2
2
3
3
2
2
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
3
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
3
2
2
3
3
2
2
3
3
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
2
3
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
3
3
3
3
3
2
2
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
3
2
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
3
3
2
2
3
3
2
3
2
3
3
3
3
2
3
2
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
3
2
3
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
3
2
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
2
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
3
2
3
2
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
3
3
3
2
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
3
3
3
3
2
3
3
3
2
2
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
3
2
3
2
2
2
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
3
3
3
3
2
2
2
3
2
2
2
2
2
3
3
3
2
2
3
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
2
2
2
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
2
3
3
3
2
2
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
2
2
2
2
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
3
3
3
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
3
2
3
3
2
3
2
3
3
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
2
3
2
3
2
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
3
2
3
2
2
2
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
2
3
3
3
2
3
3
2
3
3
2
2
3
2
2
3
2
2
3
3
3
2
3
2
3
3
3
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
2
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
3
3
3
2
2
3
3
3
2
3
2
2
2
2
2
2
2
3
3
2
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
3
3
2
2
2
3
3
2
3
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
3
3
2
3
2
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
3
3
2
2
3
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
3
2
2
2
2
3
2
2
3
2
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
3
2
2
2
2
3
3
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
2
3
2
3
3
2
2
2
3
2
2
2
2
3
3
2
3
3
3
3
3
2
3
2
2
3
3
3
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
3
2
3
3
2
3
3
3
3
3
2
2
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
2
3
3
3
2
3
3
2
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
3
2
3
2
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
3
2
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
2
3
3
2
2
2
3
2
2
3
2
2
3
2
2
3
2
2
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
3
3
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
3
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
3
3
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
2
3
2
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
2
3
2
2
3
2
2
3
3
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
2
3
3
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
3
3
3
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
3
2
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
3
2
3
3
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
3
3
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
2
2
2
2
3
3
2
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
3
3
3
3
2
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
3
3
3
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
2
3
3
2
3
3
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
2
2
2
3
2
2
3
3
2
2
3
3
3
3
3
2
2
2
3
2
3
3
2
2
3
2
2
2
3
3
3
3
2
2
2
3
2
2
2
3
2
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
3
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
3
3
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
2
3
3
2
2
2
2
2
2
3
3
2
3
2
2
3
3
3
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
2
2
2
2
3
3
2
2
3
3
3
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
3
3
3
3
2
2
3
3
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
3
2
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
3
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
3
2
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
3
2
3
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
3
3
3
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
3
2
2
3
3
3
2
2
3
3
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
3
2
2
3
2
3
3
3
3
3
2
3
2
2
3
2
3
3
3
3
2
3
2
3
3
2
2
2
2
3
2
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
3
3
3
2
3
2
3
3
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
3
2
2
3
3
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
3
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
3
3
3
2
2
3
2
3
2
2
3
2
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
3
3
3
3
3
3
2
2
2
2
3
3
3
2
3
2
2
3
3
3
2
2
3
3
3
2
2
3
3
2
2
2
3
3
2
3
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
2
3
2
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
3
2
2
2
3
2
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
2
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
2
3
3
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
3
3
3
2
2
3
3
3
2
3
2
3
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
3
2
2
3
2
3
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
2
2
3
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
3
3
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
3
2
2
3
3
2
2
3
2
3
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
3
3
2
2
2
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
3
3
3
3
2
2
2
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
3
2
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
3
3
2
3
3
3
3
2
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
2
3
2
2
2
2
3
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
2
2
3
2
3
3
3
2
3
3
3
2
2
3
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
2
2
3
3
2
3
3
3
3
3
2
2
2
2
2
2
2
3
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
3
3
2
3
3
2
3
2
2
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
2
2
2
2
2
3
2
3
3
2
3
3
2
2
3
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
3
2
2
2
2
3
2
2
2
3
3
3
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
2
3
2
2
2
3
3
2
3
2
2
2
3
2
3
3
3
3
3
2
2
2
3
3
3
3
2
3
2
2
3
2
2
2
3
3
2
2
2
3
2
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
2
3
2
2
3
2
2
2
2
2
3
3
3
2
2
3
2
2
3
2
2
3
3
3
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
2
2
2
3
3
2
2
3
3
3
2
2
2
3
2
3
3
2
2
2
3
2
2
2
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
2
3
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
3
2
2
2
3
3
3
2
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
2
3
3
2
2
2
3
3
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
3
3
3
3
2
3
3
3
3
2
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
3
2
3
3
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
3
2
3
2
2
2
2
2
3
3
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
2
3
2
3
3
2
2
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
3
3
3
2
2
3
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
3
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
3
3
3
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
3
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
3
2
3
2
3
3
3
3
3
3
2
2
2
3
3
3
2
2
3
3
2
3
2
3
3
3
3
2
2
2
3
3
3
3
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
3
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
3
3
3
2
2
2
2
3
3
2
2
2
2
2
2
3
2
2
2
3
2
2
3
3
3
2
2
3
2
3
3
2
2
3
2
3
3
2
3
3
2
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
3
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
3
3
2
3
2
2
3
2
3
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
2
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
2
3
3
2
2
2
3
2
2
3
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
3
3
2
3
2
3
3
3
3
3
2
3
2
2
3
3
3
3
2
3
2
3
3
2
3
3
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
3
3
2
2
2
3
3
3
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
3
3
3
3
2
3
3
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
2
2
3
2
2
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
3
3
2
2
3
2
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
3
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
2
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
3
3
3
3
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
3
2
3
2
2
3
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
3
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
2
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
3
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
3
2
2
3
2
3
3
3
3
3
2
3
3
3
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
2
3
3
3
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
3
3
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
2
3
3
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
3
3
2
2
3
3
2
2
2
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
3
3
2
2
2
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
3
3
3
2
2
3
2
3
3
3
3
2
2
2
2
2
2
3
3
3
2
2
2
2
3
3
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
2
2
2
2
3
3
3
3
2
2
3
2
2
2
3
3
3
3
2
2
2
3
3
3
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
3
3
2
2
3
3
2
2
3
3
2
3
2
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
2
3
3
3
3
2
2
3
3
2
2
3
2
3
2
3
3
3
2
3
2
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
3
3
2
2
2
3
3
2
3
3
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
3
3
3
2
3
2
2
3
3
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
3
3
2
2
3
3
2
3
3
2
2
3
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
3
2
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
3
2
3
3
3
2
2
3
2
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
3
3
2
2
2
3
3
2
3
2
3
3
2
2
3
2
2
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
2
3
2
2
3
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
3
2
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
2
3
2
3
2
3
3
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
2
2
3
2
2
2
3
3
3
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
3
3
3
2
2
2
3
3
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
3
3
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
2
3
3
2
3
2
2
2
3
3
2
3
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
3
2
3
3
3
2
3
2
2
3
3
3
3
3
3
2
3
2
2
2
3
2
2
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
2
3
3
3
3
2
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
2
3
3
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
3
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
2
2
3
3
2
2
2
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
3
3
3
3
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
3
3
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
3
3
2
3
3
2
2
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
2
2
3
3
2
2
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
3
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
2
3
3
2
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
3
3
3
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
2
3
3
3
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
3
2
3
2
3
2
2
2
2
3
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
3
2
3
3
3
3
3
3
3
2
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
3
3
3
2
2
2
2
2
2
3
3
3
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
3
2
2
3
3
2
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
3
3
2
3
3
3
2
2
3
2
2
2
3
2
3
3
3
3
3
3
2
2
3
2
2
2
3
3
2
2
2
3
3
3
2
3
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
2
3
2
2
3
3
3
3
3
3
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
3
3
3
3
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
2
3
3
3
2
2
3
2
2
3
3
3
3
3
3
3
2
3
3
3
2
3
3
3
2
3
2
3
2
2
2
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
2
2
3
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
3
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
2
3
3
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
2
3
2
2
3
2
2
3
2
3
3
2
3
2
3
2
3
3
3
3
2
2
2
3
2
3
2
2
3
3
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
3
3
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
3
3
3
2
2
3
2
2
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
2
2
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
3
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
3
2
3
3
3
2
3
3
2
3
3
3
3
3
2
2
3
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
3
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
3
2
2
2
2
3
3
2
3
2
2
3
3
3
2
3
2
3
3
2
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
3
3
2
3
3
2
3
3
2
3
2
2
3
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
3
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
2
3
3
2
3
3
3
3
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
2
2
3
3
3
3
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
3
3
3
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
3
2
2
3
3
2
2
3
2
2
3
2
3
3
2
3
2
2
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
3
3
3
2
3
3
2
3
2
3
3
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
3
2
2
3
2
2
3
2
3
2
2
2
2
3
2
3
3
2
3
2
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
3
2
2
3
3
2
2
2
3
3
2
2
3
2
2
3
2
2
3
3
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
2
2
3
3
2
2
3
3
3
2
2
3
3
2
3
2
2
3
2
3
3
3
2
2
2
2
3
3
3
3
3
2
2
3
2
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
2
2
2
3
2
3
3
2
2
2
3
3
3
2
2
3
2
3
3
2
3
2
3
3
2
3
3
2
3
2
3
3
3
2
2
2
2
3
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
3
3
3
3
3
2
2
2
2
2
2
2
2
2
2
3
3
2
2
3
2
2
2
2
2
2
2
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
3
2
2
2
2
3
3
3
3
2
2
3
2
3
2
2
2
3
2
3
3
2
3
3
3
3
3
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
3
3
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
2
2
3
3
3
3
2
2
3
3
3
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
2
3
2
2
2
3
3
3
3
2
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
3
3
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
2
2
3
2
3
3
2
2
2
3
2
2
2
2
2
2
2
2
3
3
3
2
3
3
2
3
2
2
2
3
2
2
3
2
3
2
2
3
2
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
3
2
2
3
3
2
2
3
2
3
3
3
2
2
2
3
2
2
2
3
2
2
3
2
2
2
3
3
2
3
3
3
3
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
2
3
2
2
3
2
2
2
3
3
3
3
2
2
2
2
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
3
2
2
2
3
2
2
2
3
3
2
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
2
3
3
2
2
2
3
3
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
3
3
2
3
3
2
3
3
2
3
2
2
2
3
2
3
2
2
3
2
2
3
3
3
2
2
3
3
3
2
2
2
3
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
2
3
2
2
3
3
2
2
3
3
2
3
2
3
2
3
3
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
2
2
3
2
2
3
3
2
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
3
2
3
2
3
2
2
3
3
2
2
2
2
3
3
3
3
2
3
3
2
3
2
2
2
3
2
3
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
2
2
2
3
3
2
3
3
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
3
3
3
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
3
3
3
3
2
3
3
2
3
2
3
2
2
3
3
2
3
3
3
3
2
2
3
2
2
3
2
2
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
3
2
3
2
2
3
3
2
3
3
2
2
3
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
3
2
2
3
2
2
2
3
2
3
3
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
3
2
3
2
2
3
2
2
3
2
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
3
3
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
2
2
2
3
2
3
2
2
3
2
3
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
3
3
3
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
3
2
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
3
2
3
3
2
3
2
2
3
3
2
3
3
2
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
3
2
2
2
3
3
3
2
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
2
3
2
2
3
2
3
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
2
2
3
2
2
3
2
2
3
2
3
3
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
3
3
2
2
3
3
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
3
3
3
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
2
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
3
3
2
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
2
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
2
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
2
3
3
2
2
3
3
3
2
2
2
2
2
2
2
2
3
3
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
3
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
3
3
2
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
3
3
3
3
3
2
3
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
3
3
3
2
2
2
2
3
3
3
2
3
2
3
3
2
2
3
3
2
3
3
2
2
2
2
3
3
2
2
3
3
3
3
2
3
3
3
2
3
3
3
2
3
3
3
3
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
2
3
3
3
3
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
3
3
3
2
3
2
3
2
2
3
2
3
3
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
3
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
3
3
3
2
3
3
3
2
2
3
2
3
2
2
3
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
3
2
2
3
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
3
2
3
3
2
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
3
3
2
2
3
3
3
3
2
2
2
3
2
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
3
3
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
3
3
2
3
2
2
3
2
3
3
2
2
3
2
3
3
3
3
2
2
2
2
3
2
2
3
3
2
2
2
2
3
2
2
3
2
2
2
3
3
2
3
3
2
3
2
3
3
2
2
3
2
3
3
2
2
2
2
3
2
3
3
3
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
2
3
2
2
2
3
3
3
3
3
2
3
2
3
2
3
2
2
3
3
3
2
2
2
2
2
3
2
2
2
2
2
2
3
2
2
2
3
2
3
3
2
2
3
2
2
2
2
2
2
3
3
2
3
3
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
3
2
3
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
3
2
3
2
3
2
3
3
2
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
3
3
2
2
2
2
3
2
2
3
3
2
3
2
2
2
3
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
3
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
2
3
2
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
2
3
2
3
2
3
3
3
3
2
2
3
3
3
3
3
2
3
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
2
2
2
2
3
3
3
3
3
3
2
2
2
2
2
3
2
3
3
3
3
2
3
3
2
2
3
3
2
3
3
2
3
2
2
3
3
3
2
2
3
2
2
3
3
3
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
3
2
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
3
3
2
3
2
2
3
3
2
3
3
3
2
2
2
3
3
3
2
2
2
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
3
2
2
3
3
2
2
3
2
2
2
3
3
3
3
3
2
2
2
3
3
3
2
3
2
3
3
2
2
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
3
3
2
2
2
3
2
3
2
2
2
2
3
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
3
3
3
3
3
3
2
2
2
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
2
3
2
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
2
3
2
3
3
2
3
2
2
3
2
2
2
3
2
2
2
2
3
2
2
3
3
3
2
2
2
3
2
3
3
3
2
3
2
2
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
3
3
3
3
3
3
2
2
2
3
2
3
3
3
2
2
2
3
2
2
2
2
2
3
2
3
3
3
3
3
2
3
3
3
3
3
3
3
3
3
2
3
2
3
2
3
3
3
2
2
3
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
2
2
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
3
2
2
3
3
3
3
3
3
2
3
2
2
3
2
2
3
2
3
2
2
3
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
2
3
3
2
3
3
3
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
3
3
2
3
2
2
2
3
3
2
3
3
3
2
3
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
2
2
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
2
3
3
3
3
2
2
3
2
2
3
2
3
3
3
3
3
3
2
2
2
2
2
2
3
2
3
3
3
2
2
2
3
3
3
2
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
2
2
2
2
3
2
2
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
2
3
2
3
3
3
2
3
2
2
2
2
2
3
3
3
3
2
3
3
2
3
2
3
3
3
2
2
2
3
3
2
2
2
2
2
3
2
3
3
2
3
2
3
3
2
3
3
3
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
2
2
3
3
2
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
3
3
2
2
2
3
2
2
2
3
2
2
3
3
2
3
3
2
2
2
3
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
3
2
3
3
3
2
3
2
2
2
3
2
3
3
3
2
3
3
3
2
3
2
2
2
2
3
2
3
3
2
2
2
3
2
3
2
3
3
2
3
2
2
3
2
3
3
2
2
2
2
2
2
3
3
3
2
3
3
2
2
3
2
2
2
2
3
3
2
2
2
2
2
3
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
3
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
3
3
3
3
3
2
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
3
3
3
2
3
2
3
2
2
2
3
3
3
3
2
2
3
2
2
3
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
3
2
3
3
2
2
3
2
3
3
2
3
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
2
2
2
2
2
2
3
2
3
2
2
3
2
3
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
3
2
2
3
3
3
2
3
3
2
2
2
2
2
2
2
2
3
2
2
3
2
3
3
3
3
3
3
2
2
3
3
3
3
2
2
3
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
3
3
2
3
3
3
3
3
2
3
2
3
3
3
2
3
3
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
2
2
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
3
2
3
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
3
2
2
3
2
3
2
2
3
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
2
2
2
2
3
3
2
2
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
3
2
3
2
2
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
3
2
2
2
3
2
2
2
2
3
3
2
3
3
2
2
3
3
3
2
2
2
3
2
3
3
3
2
2
2
2
3
2
2
2
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
3
2
2
3
3
2
2
3
2
2
3
2
2
2
2
2
3
2
3
2
2
2
2
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
2
3
3
3
3
2
3
3
2
2
2
2
2
2
3
3
3
2
2
2
2
3
2
3
2
3
2
2
2
2
2
3
3
2
3
2
2
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
3
2
3
3
3
3
3
2
2
2
2
3
2
2
3
3
3
2
3
2
3
2
2
2
2
3
3
3
3
2
3
2
2
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
3
3
2
2
3
2
3
3
3
2
2
3
2
2
3
3
2
2
2
2
3
2
2
2
3
2
2
3
2
3
3
2
2
2
3
2
2
2
2
2
3
3
2
2
3
2
2
3
3
2
2
2
3
2
2
2
2
2
3
2
2
3
3
2
2
2
2
2
3
3
2
2
3
2
2
2
2
2
3
2
2
3
3
2
3
2
3
2
3
2
3
3
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
2
3
2
3
2
3
3
3
2
2
2
2
3
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
3
2
2
3
2
3
2
3
2
2
3
3
2
2
2
2
2
3
2
2
3
3
3
2
2
2
2
3
3
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
3
3
2
2
3
2
2
2
2
2
2
3
2
2
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
3
3
2
3
2
3
3
3
2
2
3
2
2
3
2
2
2
2
3
3
2
3
3
3
2
3
2
3
3
3
3
3
2
2
2
3
2
2
3
2
3
3
3
3
2
3
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
3
2
2
3
2
3
3
2
2
3
2
2
2
3
3
2
3
3
3
3
2
3
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
3
2
2
3
2
2
2
2
3
2
2
2
2
2
2
3
3
2
2
3
2
3
2
2
2
3
2
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
3
2
3
2
3
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
3
3
3
3
2
3
3
3
2
2
2
2
2
3
2
2
2
3
3
3
2
2
2
2
3
3
3
3
2
2
2
3
2
3
2
2
3
2
2
3
2
2
2
3
2
3
2
3
3
3
2
2
2
2
2
3
3
2
3
3
2
2
2
2
2
3
2
3
2
3
2
2
2
3
2
3
3
2
3
3
2
3
2
2
3
2
2
3
3
3
3
3
2
3
2
3
2
3
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
3
2
2
3
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
3
2
2
3
2
3
2
3
2
3
2
2
2
3
2
3
3
3
2
3
2
3
2
2
2
2
2
2
2
2
2
3
2
2
3
3
2
3
2
2
2
2
2
2
2
2
3
3
2
3
2
3
3
3
2
3
3
3
3
2
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
2
2
2
2
3
2
3
2
2
3
2
3
2
2
2
3
3
2
3
3
2
2
3
2
2
2
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
3
3
2
3
3
3
2
3
2
3
2
3
2
3
2
2
2
2
2
3
2
3
2
2
3
2
2
3
2
3
2
2
2
2
2
3
2
2
3
3
2
3
3
3
2
3
2
3
2
3
2
2
2
2
3
2
2
2
2
3
3
3
2
3
2
2
2
3
3
3
2
2
2
3
2
3
2
3
2
2
3
2
2
3
2
3
2
3
2
3
2
3
2
3
2
3
3
3
2
3
2
2
2
3
2
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
2
3
2
2
2
2
3
3
2
2
3
2
3
2
2
2
2
2
2
2
2
3
2
2
3
2
3
2
2
2
3
2
3
2
3
3
2
2
3
3
2
2
3
2
3
3
2
2
2
3
3
3
3
2
3
2
3
2
2
2
2
2
3
3
3
3
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
3
2
2
3
2
3
3
2
2
2
2
3
2
2
2
3
2
2
2
3
3
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
3
3
2
3
3
3
3
3
2
2
3
2
2
2
2
2
2
3
2
3
2
2
3
2
3
2
2
3
2
3
2
3
2
3
2
2
2
2
2
2
3
3
2
2
2
2
2
3
3
3
3
3
2
2
3
3
2
3
2
3
2
2
2
3
2
2
3
2
3
2
3
2
3
3
2
2
2
3
3
2
3
3
2
2
3
2
2
2
3
3
2
2
2
2
2
2
2
3
2
2
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
3
2
3
3
3
2
2
2
2
2
2
2
2
2
3
2
2
2
2
2
3
3
2
2
2
2
3
2
3
3
2
3
3
3
3
2
3
2
2
2
2
2
2
2
3
2
3
2
3
2
3
3
3
2
2
3
3
2
3
2
2
2
3
2
3
2
2
2
3
2
3
2
2
2
3
2
2
3
3
2
3
3
3
2
3
3
3
2
3
2
2
2
3
3
2
3
3
2
2
3
2
3
3
2
3
3
2
3
2
2
2
2
2
2
3
3
2
3
3
2
3
2
2
2
2
2
3
3
2
2
3
3
3
2
3
2
3
2
2
2
3
2
2
2
3
2
2
2
3
2
2
3
3
3
2
3
2
2
3
2
3
2
2
2
3
2
2
2
3
2
3
2
3
3
2
2
2
3
2
2
2
2
2
2
3