つの隣接する組に対して、操作によって加えられる値は、非負整数 を用いて と表されます。
この値として実現できるのは
です。
したがって、1 つの隣接する組に加えられる値は、 または 以上の整数であり、 だけは作れません。これを利用して、列を前から順に合わせます。
位置 の値を変更できる操作は、組 に対する操作だけです。そのため、 を にするために必要な増加量
は一意に決まります。
この値が負、または なら実現不可能です。そうでなければ、その値を の両方に加えます。
同様に、位置 までを既に一致させたとします。この後、位置 を変更できるのは組 に対する操作だけなので、必要な増加量
は一意に決まります。
これが または 以上なら、その値を に加えます。負または なら No です。
このように の順に処理します。一度 と一致させた位置 は、それ以降の操作では変更されないため、前から順に決めてよいです。
最後の位置 には新たな操作を行えないため、最終的に なら Yes、そうでなければ No です。
なお、 のときは操作できないため、 の場合に限り Yes です。
各要素を一度ずつ調べるため、計算量 です。