← Home
For problem statement at 1000-1999/1000-1099/1000-1009/1009/problemG.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1000-1009/1009/verifierG.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	var s string
	if _, err := fmt.Fscan(in, &s); err != nil {
		return
	}
	var m int
	if _, err := fmt.Fscan(in, &m); err != nil {
		return
	}

	n := len(s)
	maskOfPos := make([]int, n+1)
	for i := 1; i <= n; i++ {
		maskOfPos[i] = 63
	}

	for i := 0; i < m; i++ {
		var pos int
		var allowed string
		fmt.Fscan(in, &pos, &allowed)
		mask := 0
		for j := 0; j < len(allowed); j++ {
			mask |= 1 << (allowed[j] - 'a')
		}
		maskOfPos[pos] = mask
	}

	cnt := make([]int, 6)
	for i := 0; i < n; i++ {
		cnt[s[i]-'a']++
	}

	C := make([]int, 64)
	for i := 1; i <= n; i++ {
		C[maskOfPos[i]]++
	}

	sum_C := make([]int, 64)
	for X := 0; X < 64; X++ {
		for S := 0; S < 64; S++ {
			if (S&X) == S {
				sum_C[X] += C[S]
			}
		}
	}

	sum_cnt := make([]int, 64)
	for X := 0; X < 64; X++ {
		for i := 0; i < 6; i++ {
			if (X&(1<<i)) != 0 {
				sum_cnt[X] += cnt[i]
			}
		}
	}

	for X := 0; X < 64; X++ {
		if sum_cnt[X] < sum_C[X] {
			fmt.Println("Impossible")
			return
		}
	}

	ans := make([]byte, n)
	for i := 1; i <= n; i++ {
		mask := maskOfPos[i]
		placed := false
		for c := 0; c < 6; c++ {
			if (mask&(1<<c)) != 0 && cnt[c] > 0 {
				valid := true
				for X := 0; X < 64; X++ {
					req := sum_C[X]
					if (X&mask) == mask {
						req--
					}
					avail := sum_cnt[X]
					if (X&(1<<c)) != 0 {
						avail--
					}
					if avail < req {
						valid = false
						break
					}
				}
				if valid {
					cnt[c]--
					for X := 0; X < 64; X++ {
						if (X&mask) == mask {
							sum_C[X]--
						}
						if (X&(1<<c)) != 0 {
							sum_cnt[X]--
						}
					}
					ans[i-1] = byte(c + 'a')
					placed = true
					break
				}
			}
		}
		if !placed {
			fmt.Println("Impossible")
			return
		}
	}
	fmt.Println(string(ans))
}
```