package main
import (
"bufio"
"bytes"
"io"
"os"
"sort"
"strconv"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(bufio.NewReaderSize(os.Stdin, 1<<20))
return &FastScanner{data: data, n: len(data)}
}
func (fs *FastScanner) NextInt64() int64 {
for fs.idx < fs.n {
c := fs.data[fs.idx]
if c == '-' || (c >= '0' && c <= '9') {
break
}
fs.idx++
}
sign := int64(1)
if fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
var val int64
for fs.idx < fs.n {
c := fs.data[fs.idx]
if c < '0' || c > '9' {
break
}
val = val*10 + int64(c-'0')
fs.idx++
}
return val * sign
}
func abs64(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func best(vals []int64, x int64) int64 {
i := sort.Search(len(vals), func(i int) bool { return vals[i] >= x })
ans := int64(1<<63 - 1)
if i < len(vals) {
ans = abs64(vals[i] - x)
}
if i > 0 {
d := abs64(vals[i-1] - x)
if d < ans {
ans = d
}
}
return ans
}
func main() {
fs := NewFastScanner()
n := int(fs.NextInt64())
m := int(fs.NextInt64())
q := int(fs.NextInt64())
var aAlt int64
for i := 1; i <= n; i++ {
v := fs.NextInt64()
if i%2 == 1 {
aAlt += v
} else {
aAlt -= v
}
}
pref := make([]int64, m+1)
for i := 1; i <= m; i++ {
v := fs.NextInt64()
if i%2 == 1 {
pref[i] = pref[i-1] + v
} else {
pref[i] = pref[i-1] - v
}
}
cnt := m - n + 1
vals := make([]int64, cnt)
for s := 1; s <= cnt; s++ {
v := pref[s+n-1] - pref[s-1]
if s%2 == 0 {
v = -v
}
vals[s-1] = v
}
sort.Slice(vals, func(i, j int) bool { return vals[i] < vals[j] })
var out bytes.Buffer
out.WriteString(strconv.FormatInt(best(vals, aAlt), 10))
out.WriteByte('\n')
for ; q > 0; q-- {
l := int(fs.NextInt64())
r := int(fs.NextInt64())
x := fs.NextInt64()
if (r-l+1)%2 == 1 {
if l%2 == 1 {
aAlt += x
} else {
aAlt -= x
}
}
out.WriteString(strconv.FormatInt(best(vals, aAlt), 10))
out.WriteByte('\n')
}
os.Stdout.Write(out.Bytes())
}