题目描述

Minecraft中有一种名叫“附魔”的操作,当走近附魔台时,周围书架上的书中会有一些奇形怪状的符号飞向附魔台,打开附魔台后,附魔台上也会出现一些奇形怪状的文字,描述了这次附魔的属性信息。这些奇怪的符号和文字被称作“龙语(Dragon Scroll)”。由于附魔是需要消耗经验值的,Rainbow企图破译龙语,以便于提前知道这次附魔是对他来说否物有所值。

经过对Minecraft内部程序的研究,Rainbow发现一条龙语实际上是由一串仅包含数字和逗号的字符串转化而来的,并且字符串中用逗号隔开的各个数是递增的,在此前提下,前面的数尽可能小。由于Rainbow的研究不够深入,他只能确定字符串中的一部分字符,还有许多字符(数字或逗号)不能够确定,用问号代替。由于Rainbow还要研究字符串具体是如何转化为龙语的,确定每个问号代表的是什么字符的任务就交给你了。

输入格式

输入包含若干行,以EOF结尾。每行一个仅由数字、逗号和问号组成的字符串。

输出格式

确定字符串中每个问号代表什么字符,并输出确定之后的字符串。注意你最终输出的字符串中逗号隔开的各个数应该是递增的,并且每个数都不能有前导零;在此前提下,前面的数尽可能小。如果输入数据不合法(有相邻的两个逗号或者开头结尾是逗号)或者不存在满足要求的字符串,输出impossible。

样例输入

?2?5??6?,??
10,???,12

样例输出

12,50,60,61
impossible

数据范围与约定

对于35%的数据,字符串长度不超过50。

对于100% 的数据,字符串长度不超过200,每个测试点不超过100组测试数据。