none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0
none
0