我们先设这个序列有 A 个 X 和 B 个 Y,那么可以想到最大的 p_{max} 就是让 X 全部排在前面,Y 全部在后面,这样的 p_{max} 就是 \sum_{i=1}^Ai+A\times B,因为前面每次都增加 a,增加 A 次,所有的 a 之和就是 \sum_{i=1}^Ai,最后 a 不变,一直增加 b,增加 B 次,所以 a 的和就是 A\times B。p_{min} 就是反过来,让 Y 全排前面,所以 p_{min}=\sum_{i=1}^Ai。我们又可以发现,在一个序列中,如果将某个左边的 X 和右边的 Y 交换,这个序列的 p 就会减一,如果存在一个 Y 的左边还有 X 就可以进行交换。最后就来到了 p_{min} 的序列。所以我们就证明了,可以在 p_{max} 的序列上进行操作,就可以让 p_{max} 连续地变到 p_{min}。所以任意一个 p_{min}\le p\le p_{max} 的整数 p 都可以构造出一个合法序列。
我们可以设 \Delta=p_{max}-p。我们知道,将一个 X 放在全部的 Y 后面,序列会减少 B 的值,将一个 X 移动到 r 个 Y 后面,序列又会减少 r,设我们将 k 个 X 全部移动到 Y 的后面,即 \Delta=kB+r,0\le r<B。这样构造的序列就是: