#pragma once
#include<cassert>
#include<type_traits>usingnamespacestd;// gcd(a, m) != 1 のとき 0 除算で RE するtemplate<typenameT>Tinv_mod(Ta,Tm){if(m==1)return0;if(a>=m)a%=m;if(a<0)a+=m;Tb=m,s=1,t=0;while(true){if(a==1)returns;t-=b/a*s;b%=a;if(b==1)returnt+m;s-=a/b*t;a%=b;}}
#line 2 "math/inv-mod.hpp"
#include<cassert>
#include<type_traits>usingnamespacestd;// gcd(a, m) != 1 のとき 0 除算で RE するtemplate<typenameT>Tinv_mod(Ta,Tm){if(m==1)return0;if(a>=m)a%=m;if(a<0)a+=m;Tb=m,s=1,t=0;while(true){if(a==1)returns;t-=b/a*s;b%=a;if(b==1)returnt+m;s-=a/b*t;a%=b;}}