B. Binary Period

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Let's say string ss has period kk if si=si+ksi=si+k for all ii from 11 to |s|−k|s|−k (|s||s| means length of string ss) and kk is the minimum positive integer with this property.

Some examples of a period: for ss="0101" the period is k=2k=2, for ss="0000" the period is k=1k=1, for ss="010" the period is k=2k=2, for ss="0011" the period is k=4k=4.

You are given string tt consisting only of 0's and 1's and you need to find such string ss that:

  1. String ss consists only of 0's and 1's;
  2. The length of ss doesn't exceed 2⋅|t|2⋅|t|;
  3. String tt is a subsequence of string ss;
  4. String ss has smallest possible period among all strings that meet conditions 1—3.

Let us recall that tt is a subsequence of ss if tt can be derived from ss by deleting zero or more elements (any) without changing the order of the remaining elements. For example, tt="011" is a subsequence of ss="10101".

Input

The first line contains single integer TT (1≤T≤1001≤T≤100) — the number of test cases.

Next TT lines contain test cases — one per line. Each line contains string tt (1≤|t|≤1001≤|t|≤100) consisting only of 0's and 1's.

Output

Print one string for each test case — string ss you needed to find. If there are multiple solutions print any one of them.

Example

input

Copy

4
00
01
111
110

output

Copy

00
01
11111
1010

Note

In the first and second test cases, s=ts=t since it's already one of the optimal solutions. Answers have periods equal to 11 and 22, respectively.

In the third test case, there are shorter optimal solutions, but it's okay since we don't need to minimize the string ss. String ss has period equal to 11.

解题说明:此题是一道字符串题目,根据题意会发现只要输出如果s中同时存在0和1时,输出10组合即可,否则直接输出s。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>

using namespace std;

int main()
{
	int t, i, c = 1;
	char s[1024];
	scanf("%d ", &t);
	while (t--) 
	{
		c = 1;
		scanf("%s", &s);
		for (i = 0; i<strlen(s) - 1; i++)
		{
			if (s[i] != s[i + 1])
			{
				c = 0;
				break;
			}
		}
		if (c == 1) 
		{
			printf("%s\n", s);
		}
		else
		{
			for (i = 0; i<strlen(s); i++) 
			{
				printf("10");
			}
			printf("\n");
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值