#agc047e. [agc047_e]Product Simulation

[agc047_e]Product Simulation

题目描述

这是一个仅输出的问题。你不需要从输入中读取任何内容。

简而言之,你的任务是通过仅使用比较操作 (x<y)(x < y) 和加法操作 (x+y)(x + y) 来模拟乘法。在这个问题中没有输入,你只需要打印操作序列。

假设有一个长度为 NN 的大数组 a\[0\], a\[1\], ..., a\[N-1\]。最开始的两个值是两个非负整数 AABB(你并不知道它们是什么),其它元素都是零。你的目标是在最后将乘积 AcdotBA \\cdot B 放在 a\[2\] 中。

你可以执行以下两种类型的操作,格式如下(其中 0leqi,j,k<N0 \\leq i, j, k < N):

  • + i j k — 应用操作 a\[k\] = a\[i\] + a\[j\]
  • < i j k — 应用操作 a\[k\] = a\[i\] < a\[j\]。也就是说,如果 a\[i\] < a\[j\],那么 a\[k\] 变为 11,否则变为 00

你最多可以使用 QQ 次操作。aa 数组的元素不能超过 VV。指标 (i,j,k)(i, j, k) 不一定要不同。可以修改数组的任意元素(包括前两个元素)。实际的检查器会在单个测试中对多个 (A,B)(A, B) 值进行模拟。每次,检查器会选择值 AABB,创建数组 a = \[A, B, 0, 0, \\ldots, 0\],应用所有你的操作,并确保 a\[2\] = A \\cdot B

约束条件

  • 0leqA,Bleq1090 \\leq A, B \\leq 10^9
  • N=Q=200,000N = Q = 200\\,000
  • $V = 10^{19} = 10\\,000\\,000\\,000\\,000\\,000\\,000$

分数说明

  • 通过满足 A,Bleq10A, B \\leq 10 的测试将获得 800800 分。
  • 全部通过将获得另外 10001000 分。

输入

标准输入为空。

输出

第一行打印操作的数量。然后每个操作以 + i j k< i j k 的单行格式打印。


示例输入 1

示例输出 1

4
< 0 1 8
+ 0 1 2
+ 2 8 2
+ 0 0 0```

在第一个示例测试中,检查器仅针对一对 $(A, B) = (2, 3)$ 检查你的序列。所给的输出对这个测试是正确的:

*   最开始,$a\[0\] = 2$,$a\[1\] = 3$,$a\[2\] = a\[3\] = \\ldots = a\[N-1\] = 0$。
*   `< 0 1 8` 执行 $a\[8\] = 1$,因为 $a\[0\] < a\[1\]$。
*   `+ 0 1 2` 执行 $a\[2\] = a\[0\] + a\[1\] = 5$。
*   `+ 2 8 2` 执行 $a\[2\] = a\[2\] + a\[8\] = 6$。
*   `+ 0 0 0` 执行 $a\[0\] = a\[0\] + a\[0\] = 4$。
*   最后,我们得到了 $a\[2\] = 6 = A \\cdot B$。