100 #20. A Recamán数列

A Recamán数列

Recamán数列

题目描述

小杨最近发现了有趣的Recamán数列,这个数列的生成规则如下:

  • 数列的第一项 a1a_1 是1;
  • 对于第 kkk>1(k>1)的计算规则:
    • 如果ak1ka_{k-1} - k是正整数且未在数列中出现过,则ak=ak1ka_k = a_{k-1} - k
    • 否则ak=ak1+ka_k = a_{k-1} + k

小杨想请你计算Recamán数列的前nn项从小到大排序后的结果。

输入格式

第一行包含一个正整数nn

输出格式

输出一行nn个空格分隔的整数,表示前nn项从小到大排序后的结果。

样例

输入样例1

5

输出样例1

1 2 3 6 7

样例解释

对于样例1,n=5n=5

  • a1=1a_1 = 1
  • a2=a1+2=3a_2 = a_1 + 2 = 3(因为12=11-2=-1不是正整数)
  • a3=a2+3=6a_3 = a_2 + 3 = 6(因为33=03-3=0不是正整数)
  • a4=a34=2a_4 = a_3 - 4 = 2(因为64=26-4=2是正整数且未出现过)
  • a5=a4+5=7a_5 = a_4 + 5 = 7(因为25=32-5=-3不是正整数) 排序结果为:1 2 3 6 7

数据范围

对于所有测试数据,保证1n30001 \leq n \leq 3000