#include using namespace std; using ll = long long; using P = pair; #define rep(i,n) for(int (i) = 0; i<(n); i++) const int N = 100000; const ll inf = 1e18; int main(){ int n; ll k; cin >> n >> k; vector a(n), b(n); rep(i,n) cin >> a[i]; rep(i,n) cin >> b[i]; // 制約 assert(1<=n && n<=N); assert(1<=k && k<=inf); rep(i,n) assert(1<=a[i] && a[i]<=N); rep(i,n) assert(1<=b[i] && b[i]<=N); // div[i] : i の約数 vector> div(N+10); for(int i=1; i<=N+5; i++){ int j = i; while(j<=N+5){ div[j].push_back(i); j += i; } } // gcd を div の値にするのに必要な操作回数 vector> st(n); rep(i,n){ ll min_cost = inf; for(int j = div[a[i]].size()-1; 0<=j; j--){ ll p = div[a[i]][j]; if(b[i]%p){ ll cost = p-b[i]%p; if(cost