import scala.io.StdIn._
object Main extends App {
  val mod = 1000000007L
  val Array(n, m, d) = readLine.trim.split(' ').map(_.toLong)
  val initialSalary = readLine.trim.split(' ').map(_.toLong)
  val jobs = readLine.trim.split(' ').map(_.toLong)
  val increase = readLine.trim.split(' ').map(_.toLong)
  val pay = (0 until n.toInt).map{id ⇒
    val diff = calStateDiff(n, m, id, jobs, increase).repeat(d / (n * m)) + calStateDiff(n, m, id, jobs, increase, d % (n * m))
    (diff.time * initialSalary(id) + diff.payForIncrease) % mod
  }
  println(pay.sum % mod)
  case class EmployeeStateDiff(time: Long, salary: Long, payForIncrease: Long) {
    def +(that: EmployeeStateDiff): EmployeeStateDiff = {
      EmployeeStateDiff((time + that.time) % mod, (salary + that.salary) % mod, (salary * that.time % mod + payForIncrease + that.payForIncrease) % mod)
    }
    def repeat(n: Long): EmployeeStateDiff = {
      n match {
        case 0L ⇒ EmployeeStateDiff(0, 0, 0)
        case 1L ⇒ this
        case _ if n % 2 == 1 ⇒ (this + this).repeat(n / 2) + this
        case _ ⇒ (this + this).repeat(n / 2)
      }
    }
  }
  def calStateDiff(n: Long, m: Long, id: Int, jobs: Array[Long], increase: Array[Long], day: Long = -1): EmployeeStateDiff = {
    var additionalTime = 0L
    var additionalPayForIncrease = 0L
    var additionalSalary = 0L
    for (d ← 0L until (if (day == -1) n * m else day)) {
      val t = jobs((((id - d) % n + n) % n).toInt)
      additionalTime += t
      additionalPayForIncrease += additionalSalary * t
      if (d % n == id) {
        additionalSalary += increase((d % m).toInt)
      }
      additionalTime %= mod
      additionalPayForIncrease %= mod
      additionalSalary %= mod
    }
    EmployeeStateDiff(additionalTime, additionalSalary, additionalPayForIncrease)
  }
}

