#P16635. [Ukiepc2020]Bidirectional Code

[Ukiepc2020]Bidirectional Code

题目描述

在地球与卫星之间进行太空通信时,不能像使用 4G 蜂窝通信那样直接传输消息。由于信号传播距离极长,消息可能受到噪声干扰而发生失真。

多年来,研究人员通过加入冗余数据来解决这一问题。这样一来,接收方就能够检测收到的数据是否出错;若发现错误,可以要求发送方重新发送,或者在错误较小时直接恢复原始消息。这一研究领域称为编码理论

我们设计了一种新的冗余编码系统。为了发送一个整数,只需要把它表示成若干个回文数之和,再像平常一样逐个发送这些回文数。接收方可以检查收到的每个数是否为回文数;如果某个数不是回文数,就说明传输过程中发生了错误。

一个整数的十进制表示从左向右读与从右向左读完全相同,则称它为回文数

为了保证通信效率,一个整数最多只能被拆分成 1010 个回文数之和。

给定整数 nn,请构造一种分解方式,将 nn 表示成不超过 1010 个回文数之和。

注:已有研究证明,每个正整数都可以表示成三个回文数之和;但你不需要将项数最小化。

输入格式

输入仅一行,包含一个整数 nn

1n<1018.1\le n<10^{18}.

输出格式

第一行输出一个整数 kk,表示使用的回文数数量,必须满足:

1k10.1\le k\le 10.

接下来输出 kk 行,每行包含一个回文数。

这些回文数之和必须恰好等于 nn

如果存在多种合法答案,可以输出任意一种。

样例 1

输入

1100000

输出

2
645546
454454

样例 2

输入

1000

输出

5
1
99
1
898
1