Sophisticated Device
You are given integers and , is prime.
Also you have a mysterious device. It has memory cells, each contains an integer between and . Also two instructions are supported, addition and raising to the -th power. Both are modulo .
The memory cells are numbered . Initially cells and contain integers and , respectively . All other cells contain s.
You cannot directly access values in cells, and you don't know values of and (but you know they are written in first two cells). You mission, should you choose to accept it, is to write a program using the available instructions to obtain the product modulo in one of the cells. You program should work for all possible and .
Addition instruction evaluates sum of values in two cells and writes it to third cell. This instruction is encoded by a string "+ e1 e2 to"
, which writes sum of values in cells e1
and e2
into cell to
. Any values of e1
, e2
, to
can coincide.
Second instruction writes the -th power of a value in some cell to the target cell. This instruction is encoded by a string "^ e to"
. Values e
and to
can coincide, in this case value in the cell will be overwritten.
Last instruction is special, this is the return instruction, and it is encoded by a string "f target"
. This means you obtained values mod in the cell target. No instructions should be called after this instruction.
Provide a program that obtains mod and uses no more than instructions (including the return instruction).
It is guaranteed that, under given constrains, a solution exists.
Input
The first line contains space-separated integers and .
Output
Output instructions, one instruction per line in the above format. There should be no more than lines, and the last line should be the return instruction.
Examples
This problem has no sample tests. A sample output is shown below. Note that this output is not supposed to be a solution to any testcase and is there purely to illustrate the output format.
+ 1 1 3 ^ 3 3 + 3 2 2 + 3 2 3 ^ 3 1 f 1
Here's a step-by-step runtime illustration:
cell 1 | cell 2 | cell 3 | |
initially | |||
| |||
| |||
| |||
| |||
|
Suppose that and . Since for and , the returned result is mod , this program would be judged as incorrect.