atcoder.jp
がで解けるよという話です。特に何か面白いと言ったことはなくて、ただの土木ですが、一応。
必要十分条件は
各について
・なら
・なら
となっていることです。
ここで、であるようなについてで区切って、それぞれの列について問題を解いてからその積に適切な多項係数をかければよいことを考えると、結局各についてまたはという条件が設定されていて、その条件を満たすような順列を数え上げれば良いです。これはEDPC-Tなわけですが、これは包除原理を考えると、分割統治+FFTでで解くことができます。
詳しくは、Nachiaさんの裏EDPCなどを参照してください :
実装例だけ載せておきます: