package main
import (
"fmt"
"sort"
)
type Team struct {
name string
rating int
}
func main() {
var n int
if _, err := fmt.Scan(&n); err != nil {
return
}
var x, a, b, c int
fmt.Scan(&x, &a, &b, &c)
teams := make([]Team, n)
for i := 0; i < n; i++ {
fmt.Scan(&teams[i].name, &teams[i].rating)
}
sort.Slice(teams, func(i, j int) bool {
return teams[i].rating > teams[j].rating
})
m := n / 4
baskets := make([][]Team, 4)
for i := 0; i < 4; i++ {
baskets[i] = append([]Team(nil), teams[i*m:(i+1)*m]...)
}
for i := 0; i < m; i++ {
fmt.Printf("Group %c:\n", 'A'+i)
if i < m-1 {
for j := 0; j < 4; j++ {
s := len(baskets[j])
x = (x*a + b) % c
idx := x % s
fmt.Println(baskets[j][idx].name)
baskets[j] = append(baskets[j][:idx], baskets[j][idx+1:]...)
}
} else {
for j := 0; j < 4; j++ {
fmt.Println(baskets[j][0].name)
}
}
}
}