#include <bits/stdc++.h>
using namespace std;
int n, k;
long long x = 0;
int a[100001], b[100001];
void czytaj() {
  cin >> n >> k;
  for (int i = 1; i <= n / k; i++) cin >> a[i];
  for (int i = 1; i <= n / k; i++) cin >> b[i];
}
long long pot(long long D, long long d) {
  int z = 1;
  while (d--) z = z * D;
  return z;
}
long long ile(long long a, long long x) { return (x - 1) / a + 1; }
long long iled(long long a, long long d, long long b) {
  int y;
  y = pot(10, d);
  if (b != 0)
    return (ile(a, y) - ile(a, y / 10 * (b + 1)) + ile(a, y / 10 * b)) %
           1000000007;
  else
    return (ile(a, y) - ile(a, y / 10 * (b + 1))) % 1000000007;
}
int main() {
  long long ss = 1;
  czytaj();
  for (int i = 1; i <= n / k; i++) ss = (ss * iled(a[i], k, b[i])) % 1000000007;
  cout << ss << "\n";
}
