// +build ignore,OMIT

package main

import (
	"fmt"
	"time"
)

func f(left, right chan int) {
	left <- 1 + <-right
}

func main() {
	start := time.Now()
	const n = 1000
	leftmost := make(chan int)

	right := leftmost
	left := leftmost
	for i := 0; i < n; i++ {
		right = make(chan int)
		go f(left, right)
		left = right
	}

	go func(c chan int) { c <- 0 }(right)

	fmt.Println(<-leftmost, time.Since(start))
}
