← Home
```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}

	arr := make([]int64, n)
	mp := make(map[int64]struct{}, n)
	for i := 0; i < n; i++ {
		var x int64
		fmt.Fscan(in, &x)
		arr[i] = x
		mp[x] = struct{}{}
	}

	pairFound := false
	var p1, p2 int64

	for _, x := range arr {
		for k := 0; k <= 30; k++ {
			delta := int64(1) << uint(k)
			y := x + delta
			if _, ok := mp[y]; ok {
				if !pairFound {
					p1, p2 = x, y
					pairFound = true
				}
				z := x + 2*delta
				if _, ok2 := mp[z]; ok2 {
					fmt.Fprintln(out, 3)
					fmt.Fprintln(out, x, y, z)
					return
				}
			}
		}
	}

	if pairFound {
		fmt.Fprintln(out, 2)
		fmt.Fprintln(out, p1, p2)
		return
	}

	fmt.Fprintln(out, 1)
	fmt.Fprintln(out, arr[0])
}
```