package main
import (
"bufio"
"os"
)
func main() {
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
writer := bufio.NewWriterSize(os.Stdout, 1<<20)
defer writer.Flush()
nextInt := func() int64 {
var sign int64 = 1
var val int64 = 0
c, err := reader.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = reader.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, _ = reader.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c, err = reader.ReadByte()
if err != nil {
break
}
}
return val * sign
}
m := int(nextInt())
var cnt [30]int64
for i := 0; i < m; i++ {
t := nextInt()
v := nextInt()
if t == 1 {
if v >= 0 && v < 30 {
cnt[v]++
}
} else {
remain := v
for b := 29; b >= 0 && remain > 0; b-- {
den := int64(1) << uint(b)
canUse := remain / den
if canUse > 0 {
use := cnt[b]
if use > canUse {
use = canUse
}
remain -= use * den
}
}
if remain == 0 {
writer.WriteString("YES\n")
} else {
writer.WriteString("NO\n")
}
}
}
}