##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
You are given two binary strings and , both of length .
In one operation, you may choose two indices and such that , , and in the current string. Then you invert every bit in the segment .
In other words, every in this segment becomes , and every becomes .
Your task is to transform into using at most operations, or determine that it is impossible.
If there are multiple valid answers, you may output any of them.
For each test case, if it is impossible to transform into , output:
Otherwise, output an integer , the number of operations.
Then output lines. In the -th line, output two integers and , meaning that the -th operation is applied to the segment .
The operations must be valid when they are applied, and after applying all operations the string must become equal to .
It must hold that .
If there are multiple valid answers, you may output any of them.
After applying operation , the string becomes . Then applying operation changes it to .
It is impossible to transform into using valid operations.
After applying operation , the string becomes . Then applying operation changes it to .
After applying operation , the string becomes . Then applying operation changes it to . Finally, applying operation changes it to .