スタックトレースを蹂躙するクイズ

全要素が 1 以上の整数の列を受け取って、「その数を行番号とするスタックトレースを出力するプログラム」を出力するプログラムを書きなさい。
つまりこんな感じに動くもの。

$ ruby19 gen.rb 1 1 2 3 5 8 13 21 34 55 | ruby19
-:1:in `f1': unhandled exception
        from -:1:in `f1'
        from -:2:in `f2'
        from -:3:in `f3'
        from -:5:in `f5'
        from -:8:in `f8'
        from -:13:in `f13'
        from -:21:in `f21'
        from -:34:in `f34'
        from -:55:in `<main>'
$ ruby19 gen.rb 10000 1000 100 10 1 | ruby19
-:10000:in `f10000': unhandled exception
        from -:1000:in `f1000'
        from -:100:in `f100'
        from -:10:in `f10'
        from -:1:in `<main>'
$ ruby19 gen.rb 1 1 2 1 2 3 1 2 3 4 | ruby19
-:1:in `f1': unhandled exception
        from -:1:in `f1'
        from -:2:in `f2'
        from -:1:in `f1'
        from -:2:in `f2'
        from -:3:in `f3'
        from -:1:in `f1'
        from -:2:in `f2'
        from -:3:in `f3'
        from -:4:in `<main>'

もちろん $stderr.puts とかは禁止。別に Ruby じゃなくてもいいです。答えはそのうち。