問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
あなたはこれまでに出会った人たちの名刺を集めています。
名刺は、複数枚のファイルを閉じることができるバインダーに保存されています。
1枚のファイルには、n個のポケットが横に並んでおり、表と裏の両面から名刺を眺めることができます。
このため、1つのポケットには、2枚の名刺が背中合わせに入っています。
各名刺には1から順に通し番号が付いているため、この番号の順に名刺を眺めることができるようにポケットに入っています。
1番からn番の名刺は、1枚目のファイルの表面から見たときに左詰めに並んでおり、
n+1番から2n番の名刺は、1枚目のファイルの裏面から見たときに左詰めに並んでいます。
2枚目以降のファイルにも同様に名刺が並んでいます。
上の図はn=3のときのバインダーの様子を表しています。
各ポケットの数字はそのポケットで眺めることができる名刺の番号で、
括弧で表される数字はそのポケットを反対の面から見たときに眺めることができる名刺の番号です。
名刺の番号mが与えられるので、その名刺の裏側の名刺の番号を表示するプログラムを作成してください。
ただし、番号mの名刺の裏面には必ず名刺が存在するものとしてください。
n m
m番の名刺の裏側の番号
1 ≦ n ≦ 100,000
1 ≦ m ≦ 100,000
3 1
6
3 6
1
3 8
11
157 1518
1309