class Fib { priv. Int a; priv. Int b; init(Int a, Int b) { self.a := a; self.b := b; } next(Int n) { print self.a, ",",; print self.b; if ( gtInt(n, 1) ) { self.a := add(self.a, self.b); self.b := add(self.a, self.b); self.next(sub(n, 2) : n : _); } else if ( gtInt(n, 0) ) { self.b := add(self.a, self.b); self.a := sub(self.b, self.a); print self.b; } else skip; } } main { Fib fib, Int n; Fib.new(fib); if ( ltInt(argc(), 1) ) n := 199; else n := parseInt(argv(0)); fib.init(0, 1 : a, b : _, _); fib.next(n : n : _); }