// $G $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.

package main

// brainfuck

func main() {
	var a [30000]byte;
	prog := "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.!";
	p := 0;
	pc := 0;
	for {
		switch prog[pc] {
			case '>':
					p++;
			case '<':
					p--;
			case '+':
					a[p]++;
			case '-':
					a[p]--;
			case '.':
					print string(a[p]);
			case '[':
				if a[p] == 0 {
					for nest := 1; nest > 0; pc++ {
						switch prog[pc+1] {
							case ']':
								nest--;
							case '[':
								nest++;
						}
					}
				}
			case ']':
				if a[p] != 0 {
					for nest := -1; nest < 0; pc-- {
						switch prog[pc-1] {
							case ']':
								nest--;
							case '[':
								nest++;
						}
					}
				}
			default:
					return;
		}
		pc++;
	}
}
