// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// make a lot of goroutines, threaded together.
// tear them down cleanly.

package main

import (
	"os";
	"strconv";
)

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

func main() {
	var n = 10000;
	if len(os.Args) > 1 {
		var err os.Error;
		n, err = strconv.Atoi(os.Args[1]);
		if err != nil {
			print("bad arg\n");
			os.Exit(1);
		}
	}
	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 <- 1 }(right);
	<-leftmost;
}
