```go
package main
import (
"fmt"
"io"
"os"
)
func main() {
input, err := io.ReadAll(os.Stdin)
if err != nil && err != io.EOF {
// Proceed with whatever was read
}
pos := 0
skipWhitespace := func() {
for pos < len(input) && input[pos] <= ' ' {
pos++
}
}
skipWhitespace()
if pos >= len(input) {
return
}
start := pos
for pos < len(input) && input[pos] > ' ' {
pos++
}
original := input[start:pos]
skipWhitespace()
k := 0
for pos < len(input) && input[pos] > ' ' {
k = k*10 + int(input[pos]-'0')
pos++
}
skipWhitespace()
n := 0
for pos < len(input) && input[pos] > ' ' {
n = n*10 + int(input[pos]-'0')
pos++
}
s := make([]byte, 0, k)
if len(original) > k {
s = append(s, original[:k]...)
} else {
s = append(s, original...)
}
mangledBuf := make([]byte, k)
for i := 0; i < n; i++ {
skipWhitespace()
if pos >= len(input) {
break
}
l := 0
for pos < len(input) && input[pos] > ' ' {
l = l*10 + int(input[pos]-'0')
pos++
}
skipWhitespace()
r := 0
for pos < len(input) && input[pos] > ' ' {
r = r*10 + int(input[pos]-'0')
pos++
}
l--
r--
if r >= k {
continue
}
L := r - l + 1
oldLen := len(s)
newLen := oldLen + L
if newLen > k {
newLen = k
}
needed := newLen - (r + 1)
if needed > L {
needed = L
}
if needed <= 0 {
continue
}
evenStart := l + 1
evenEnd := r
evenCount := 0
if evenStart <= evenEnd {
evenCount = (evenEnd - evenStart)/2 + 1
}
takeEven := evenCount
if takeEven > needed {
takeEven = needed
}
if takeEven > 0 {
_ = mangledBuf[takeEven-1]
_ = s[evenStart+(takeEven-1)*2]
for j := 0; j < takeEven; j++ {
mangledBuf[j] = s[evenStart+j*2]
}
}
idx := takeEven
if idx < needed {
takeOdd := needed - idx
oddStart := l
if takeOdd > 0 {
_ = mangledBuf[idx+takeOdd-1]
_ = s[oddStart+(takeOdd-1)*2]
for j := 0; j < takeOdd; j++ {
mangledBuf[idx+j] = s[oddStart+j*2]
}
}
}
s = s[:newLen]
if r+1+L < newLen {
copy(s[r+1+L:newLen], s[r+1:oldLen])
}
copy(s[r+1:newLen], mangledBuf[:needed])
}
fmt.Println(string(s))
}
```