package main
import (
"io"
"os"
"strconv"
)
const B = 450
func nextInt(data []byte, idx *int) int {
n := len(data)
for *idx < n {
c := data[*idx]
if c >= '0' && c <= '9' {
break
}
*idx++
}
v := 0
for *idx < n {
c := data[*idx]
if c < '0' || c > '9' {
break
}
v = v*10 + int(c-'0')
*idx++
}
return v
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
n := nextInt(data, &idx)
m := nextInt(data, &idx)
x := make([]int, n+1)
y := make([]int, n+1)
per := make([]int, n+1)
hasSmall := make([]bool, B+1)
smallPeriods := make([]int, 0, B)
for i := 1; i <= n; i++ {
xi := nextInt(data, &idx)
yi := nextInt(data, &idx)
p := xi + yi
x[i] = xi
y[i] = yi
per[i] = p
if p <= B && !hasSmall[p] {
hasSmall[p] = true
smallPeriods = append(smallPeriods, p)
}
}
sdiff := make([][]int, B+1)
for _, p := range smallPeriods {
sdiff[p] = make([]int, p)
}
rem := make([]int, B+1)
curr := make([]int, B+1)
smallTotal := 0
start := make([]int, n+1)
diff := make([]int, m+3)
curLarge := 0
out := make([]byte, 0, m*8)
for day := 1; day <= m; day++ {
op := nextInt(data, &idx)
k := nextInt(data, &idx)
for i := 0; i < len(smallPeriods); i++ {
p := smallPeriods[i]
nr := rem[p] + 1
if nr == p {
rem[p] = 0
old := curr[p]
nv := sdiff[p][0]
curr[p] = nv
smallTotal += nv - old
} else {
rem[p] = nr
d := sdiff[p][nr]
curr[p] += d
smallTotal += d
}
}
pk := per[k]
if op == 1 {
start[k] = day
if pk <= B {
d := sdiff[pk]
l := (day + x[k]) % pk
length := y[k]
end := l + length
if end <= pk {
d[l]++
if end < pk {
d[end]--
}
} else {
d[l]++
d[0]++
d[end-pk]--
}
r := rem[pk]
if (end <= pk && r >= l && r < end) || (end > pk && (r >= l || r < end-pk)) {
curr[pk]++
smallTotal++
}
} else {
step := pk
yy := y[k]
for l := day + x[k]; l <= m; l += step {
r := l + yy
if r > m+1 {
r = m + 1
}
diff[l]++
diff[r]--
}
}
} else {
s := start[k]
start[k] = 0
if pk <= B {
d := sdiff[pk]
l := (s + x[k]) % pk
length := y[k]
end := l + length
if end <= pk {
d[l]--
if end < pk {
d[end]++
}
} else {
d[l]--
d[0]--
d[end-pk]++
}
r := rem[pk]
if (end <= pk && r >= l && r < end) || (end > pk && (r >= l || r < end-pk)) {
curr[pk]--
smallTotal--
}
} else {
step := pk
yy := y[k]
for l := s + x[k]; l <= m; l += step {
r := l + yy
if r > m+1 {
r = m + 1
}
L := l
if L < day {
L = day
}
if L < r {
diff[L]--
diff[r]++
}
}
}
}
curLarge += diff[day]
out = strconv.AppendInt(out, int64(curLarge+smallTotal), 10)
out = append(out, '\n')
}
os.Stdout.Write(out)
}