Codeforces Round 741 (Div. 2)
D2
Two Hundred Twenty One (hard version)
Codeforces
2200
原题
← D1E →
翻译中…

This is the hard version of the problem. The difference between the versions is that the hard version does require you to output the numbers of the rods to be removed. You can make hacks only if all versions of the problem are solved.

翻译中…

Stitch likes experimenting with different machines with his friend Sparky. Today they built another machine.

翻译中…

The main element of this machine are $n$ rods arranged along one straight line and numbered from $1$ to $n$ inclusive. Each of these rods must carry an electric charge quantitatively equal to either $1$ or $-1$ (otherwise the machine will not work). Another condition for this machine to work is that the sign-variable sum of the charge on all rods must be zero.

翻译中…

More formally, the rods can be represented as an array of $n$ numbers characterizing the charge: either $1$ or $-1$. Then the condition must hold: $a_1 - a_2 + a_3 - a_4 + \ldots = 0$, or $\sum\limits_{i=1}^n (-1)^{i-1} \cdot a_i = 0$.

翻译中…

Sparky charged all $n$ rods with an electric current, but unfortunately it happened that the rods were not charged correctly (the sign-variable sum of the charge is not zero). The friends decided to leave only some of the rods in the machine. Sparky has $q$ questions. In the $i$th question Sparky asks: if the machine consisted only of rods with numbers $l_i$ to $r_i$ inclusive, what minimal number of rods could be removed from the machine so that the sign-variable sum of charges on the remaining ones would be zero? Also Sparky wants to know the numbers of these rods. Perhaps the friends got something wrong, and the sign-variable sum is already zero. In that case, you don't have to remove the rods at all.

翻译中…

If the number of rods is zero, we will assume that the sign-variable sum of charges is zero, that is, we can always remove all rods.

翻译中…

Help your friends and answer all of Sparky's questions!

翻译中…

Input

翻译中…

Each test contains multiple test cases.

翻译中…

The first line contains one positive integer $t$ ($1 \le t \le 10^3$), denoting the number of test cases. Description of the test cases follows.

翻译中…

The first line of each test case contains two positive integers $n$ and $q$ ($1 \le n, q \le 3 \cdot 10^5$) — the number of rods and the number of questions.

翻译中…

The second line of each test case contains a non-empty string $s$ of length $n$, where the charge of the $i$-th rod is $1$ if $s_i$ is the "+" symbol, or $-1$ if $s_i$ is the "-" symbol.

翻译中…

Each next line from the next $q$ lines contains two positive integers $l_i$ ans $r_i$ ($1 \le l_i \le r_i \le n$) — numbers, describing Sparky's questions.

翻译中…

It is guaranteed that the sum of $n$ over all test cases does not exceed $3 \cdot 10^5$, and the sum of $q$ over all test cases does not exceed $3 \cdot 10^5$.

翻译中…

It is guaranteed that the sum of the answers (minimal number of rods that can be removed) over all test cases does not exceed $10^6$.

翻译中…

Output

翻译中…

For each test case, print the answer in the following format:

翻译中…

In the first line print a single integer $k$ — the minimal number of rods that can be removed.

翻译中…

In the second line print $k$ numbers separated by a space — the numbers of rods to be removed.

翻译中…

If there is more than one correct answer, you can print any.

翻译中…

Note

翻译中…

In the first test case for the first query you can remove the rods numbered $5$ and $8$, then the following set of rods will remain: +--+--++-++-. It is easy to see that here the sign-variable sum is zero.

翻译中…

In the second test case:

翻译中…
  • For the first query, we can remove the rods numbered $1$ and $11$, then the following set of rods will remain: --++---++---. It is easy to see that here the sign-variable sum is zero.
  • For the second query we can remove the rod numbered $9$, then the following set of rods will remain: ---++-. It is easy to see that here the variable sum is zero.
  • For the third query we can not remove the rods at all.
翻译中…

样例

Input #1
3
14 1
+--++---++-++-
1 14
14 3
+--++---+++---
1 14
6 12
3 10
4 10
+-+-
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4
Output #1
2
5 8
2
1 11
1
9
0
1
1
2
1 2
1
2
2
1 3
1
2
2
2 3
1
3
1
3
2
3 4
1
4
InputCopy OutputCopy
题目信息
题号
1562D2
时间限制
2 s
内存限制
512 MB
标签
数据结构
数学

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。