https://abc042.contest.atcoder.jp/tasks/arc058_b?lang=en
由于左下角有禁区,所以左上角到右下角的路径分为两段,一段从左上角到禁区的上面那一行,一段从禁区的上面那一行到右下角,然后求和即可,这题是用来保存组合数取模模板的。
ll quickpow(ll x, int k)
{
ll res = 1;
while(k){
if(k & 1) res = (res * x) % mod;
k >>= 1, x = (x * x) % mod;
}<