A. Grasshopper on a Line

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given two integers x� and k�. Grasshopper starts in a point 00 on an OX axis. In one move, it can jump some integer distance, that is not divisible by k�, to the left or to the right.

What's the smallest number of moves it takes the grasshopper to reach point x�? What are these moves? If there are multiple answers, print any of them.

Input

The first line contains a single integer t� (1≤t≤10001≤�≤1000) — the number of testcases.

The only line of each testcase contains two integers x� and k� (1≤x≤1001≤�≤100; 2≤k≤1002≤�≤100) — the endpoint and the constraint on the jumps, respectively.

Output

For each testcase, in the first line, print a single integer n� — the smallest number of moves it takes the grasshopper to reach point x�.

In the second line, print n� integers, each of them not divisible by k�. A positive integer would mean jumping to the right, a negative integer would mean jumping to the left. The endpoint after the jumps should be exactly x�.

Each jump distance should be from −109−109 to 109109. In can be shown that, for any solution with the smallest number of jumps, there exists a solution with the same number of jumps such that each jump is from −109−109 to 109109.

It can be shown that the answer always exists under the given constraints. If there are multiple answers, print any of them.

Example

input

Copy

 
  

3

10 2

10 3

3 4

output

Copy

2
7 3
1
10
1
3

解题说明:此题是一道模拟题,根据题目意思直接判断

如果k大于x,那么就可以一次走完,输出1

如果k小于x,如果k不能被x整除,那么输出1,如果k可以被x整除,那么输出两个数,分别是1,x-1.

#include 
int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int x, k;
		scanf("%d %d", &x, &k);
		if (x % k != 0)
		{
			printf("1\n%d\n", x);
		}
		else
		{
			printf("2\n1 %d\n", x - 1);
		}
	}
	return 0;
}

你可能感兴趣的:(AC路漫漫,算法)