package main
import (
"bufio"
"io"
"os"
"sort"
"strconv"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
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 != '\n' && c != '\r' && c != '\t' {
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(arr []int64, target int64) int64 {
i := sort.Search(len(arr), func(i int) bool { return arr[i] >= target })
ans := int64(1 << 62)
if i < len(arr) {
d := abs64(arr[i] - target)
if d < ans {
ans = d
}
}
if i > 0 {
d := abs64(arr[i-1] - target)
if d < ans {
ans = d
}
}
return ans
}
func main() {
fs := NewFastScanner()
n := int(fs.NextInt64())
m := int(fs.NextInt64())
q := int(fs.NextInt64())
var cur int64
for i := 1; i <= n; i++ {
x := fs.NextInt64()
if i&1 == 1 {
cur += x
} else {
cur -= x
}
}
pref := make([]int64, m+1)
for i := 1; i <= m; i++ {
x := fs.NextInt64()
if i&1 == 1 {
pref[i] = pref[i-1] + x
} else {
pref[i] = pref[i-1] - x
}
}
vals := make([]int64, m-n+1)
for j := 0; j <= m-n; j++ {
s := pref[j+n] - pref[j]
if j&1 == 1 {
s = -s
}
vals[j] = s
}
sort.Slice(vals, func(i, j int) bool { return vals[i] < vals[j] })
out := bufio.NewWriterSize(os.Stdout, 1<<20)
out.WriteString(strconv.FormatInt(best(vals, cur), 10))
out.WriteByte('\n')
for ; q > 0; q-- {
l := int(fs.NextInt64())
r := int(fs.NextInt64())
x := fs.NextInt64()
if ((r - l + 1) & 1) == 1 {
if l&1 == 1 {
cur += x
} else {
cur -= x
}
}
out.WriteString(strconv.FormatInt(best(vals, cur), 10))
out.WriteByte('\n')
}
out.Flush()
}