Problem:
Set: Search

For a set $S$ of integers, perform a sequence of the following operations. Note that each value in $S$ must be unique.

insert($x$): Insert $x$ to $S$ and report the number of elements in $S$ after the operation.

find($x$): Report the number of $x$ in $S$ (0 or 1).

Input

The input is given in the following format.

$q$
$query_1$
$query_2$
:
$query_q$

Each query $query_i$ is given by

0 $x$

or

1 $x$

where the first digits 0 and 1 represent insert and find operations respectively.

Output

For each insert operation, print the number of elements in $S$.

For each find operation, print the number of specified elements in $S$.

Constraints

$1 \leq q \leq 200,000$

$0 \leq x \leq 1,000,000,000$

Sample Input 1

7
0 1
0 2
0 3
0 2
0 4
1 3
1 10

Sample Output 1

1
2
3
3
4
1
0

Solution in Go (judge verdict: Accepted)

package main

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

func nextInt(sc *bufio.Scanner) int {
	sc.Scan()
	t, _ := strconv.Atoi(sc.Text())
	return t
}

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Split(bufio.ScanWords)
	q := nextInt(sc)
	ans := make([]int, q)
	set := make(map[int]int, 0)
	for i := 0; i < q; i++ {
		op := nextInt(sc)
		x := nextInt(sc)
		if op == 0 {
			set[x]++
			ans[i] = len(set)
		} else if set[x] > 0 {
			ans[i] = 1
		}
	}
	for i := 0; i < len(ans); i++ {
		fmt.Println(ans[i])
	}
}