[Question]
  [
A number is in base-b simplified Goodstein form if it is written as
```
b + b + ... + b + c,   0 < c ≤ b
```
The simplified Goodstein sequence of a number starts with writing the number in base-1 simplified Goodstein form, then replacing all 1's with 2's and subtracting 1. Rewrite the result in base-2 simplified Goodstein form, then replace all 2's with 3's and subtract 1, etc. until you reach 0.
Your program is to take a positive integer input and output/print its Goodstein sequence and terminate. Your program should handle numbers less than 100, though it may not terminate in a reasonable amount of time.
For example, given 3 as the input, your program should output (the right side is just explanation)
```
1 + 1 + 1                | 3 = 1 + 1 + 1
2 + 2 + 1                | Change 1's to 2's, then subtract 1. (2 + 2 + 2 - 1 = 2 + 2 + 1)
3 + 3                    | 3 + 3 + 1 - 1 = 3 + 3
4 + 3                    | 4 + 4 - 1 = 4 + 3
5 + 2                    | 5 + 3 - 1 = 5 + 2
6 + 1                    | 6 + 2 - 1 = 6 + 1
7                        | 7 + 1 - 1 = 7
7                        | 8 - 1 = 7
6                        | Numbers are now lower than the base, so just keep subtracting 1.
5                        |
4                        |
3                        |
2                        |
1                        |
0                        | End
```
Spacing doesn't matter.
---
## Winning criterion:
This is [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'"). Shortest code wins.
  
[Answer]
# Python 2, 77 74 bytes
-3 bytes thanks to [Lynn](https://codegolf.stackexchange.com/users/3852/lynn)
```
n=input();b=1
while n:print"+".join(n/b*[`b`]+[`n%b`][:n%b]);n+=n/b-1;b+=1
```
[Try it online!](https://tio.run/##K6gsycjPM/r/P882M6@gtERD0zrJ1pCrPCMzJ1Uhz6qgKDOvRElbSS8rPzNPI08/SSs6ISkhVjs6IU8VSEdbAalYTes8bVugnK6hdZK2reH//8YA)
Easily runs up to n = 100 (though the output is too long for tio fully show).
[Answer]
# [Pyth](https://github.com/isaacg1/pyth), 29 bytes
```
WQ=hZj\++*]Z/QZ<]J%QZJ=+Qt/QZ
```
**[Try it here!](https://pyth.herokuapp.com/?code=WQ%3DhZj%5C%2B%2B%2a%5DZ%2FQZ%3C%5DJ%25QZJ%3D%2BQt%2FQZ&input=3&debug=0)**
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 19 bytes
```
Å1[D'+ý,N>D>:`Ž<)0K
```
Could also be rearranged as `>Å1[ND>:`Ž<)0KD'+ý,`
[Try it online!](https://tio.run/##MzBNTDJM/f//cKthtIu69uG9On52LnZWCUf32mgaeP//bwwA "05AB1E – Try It Online")
**Explanation**
```
Å1                    # push a list of 1's the length of the input
  [                   # start a loop
   D                  # duplicate the current list
    '+ý,              # join on "+" and print
        N>D>:         # replace <current_iteration>+1 with <current_iteration>+2
             `        # flatten the list to the stack
              Ž       # break loop if the stack is empty
               <      # decrement the top number
                )     # wrap the stack in a list
                 0K   # remove zeroes
```
[Answer]
# Mathematica, 123 bytes
```
(s=1~Table~#;i=1;While[s!={},Print@StringRiffle[ToString/@s,"+"];s=s/.i->i+1;s=Join[Most@s,{Last@s}-1]~DeleteCases~0;i++])&
```
  
[Try it online!](https://tio.run/##JYmxCsIwFAB/pVYQJa01OIZIQSdREC04hAypvNgHbQO@bKX59RhxujtuML6DwXh8mWgzmcU1SR4a0/YQlgIlF88Oe1C0kNNc3D44@vrhE953tDaNxv2zqqnIWa4FSaq2WB6Q8eRnh6O6OvJpTxfz41xyHU7Qg4ejIaCwE8iY3qyiVXsdvw "Wolfram Language (Mathematica) – Try It Online")
[Answer]
# Python 3, 155 bytes
```
n=int(input());l=[1]*(n+1);i=0
while l:
    l=[t+1 if t==i else t for t in l];l[-1]-=1;l=l[:-1] if l[-1]==0 else l;print("+".join(list(map(str,l))));i+=1
```
This can be reformatted into
```
n = int(input())
l = [0]*(n+1)
i = 0
while l:
    l = [t+1 if t==i else t for t in l]
    if l[-1] == 0:
        l = l[:-1]
    print("+".join(list(map(str,l))))
    i += 1
```
[Answer]
# Javascript ES6, 121 chars
```
for(q=1,s=Array(+prompt()).fill(1).join`+`;s!=0;s=s.split(q).join(++q).replace(/\d+$/,x=>x-1).replace(/\+0$/,''))alert(s)
```
```
alert=s=>document.write(s+'\n')
document.write("<pre>")
for(q=1,s=Array(+prompt()).fill(1).join`+`;s!=0;s=s.split(q).join(++q).replace(/\d+$/,x=>x-1).replace(/\+0$/,''))alert(s)
```
[Answer]
# [Perl 5](https://www.perl.org/), 71 bytes
```
$,='+';for(@a=(++$")x<>;@a;--$a[-1]||pop@a){say@a;$_+=$_==$"for@a;$"++}
```
[Try it online!](https://tio.run/##K0gtyjH9/19Fx1ZdW906Lb9IwyHRVkNbW0VJs8LGztoh0VpXVyUxWtcwtqamIL/AIVGzujixEiisEq9tqxJva6uiBNQE4itpa9f@/2/8L7@gJDM/r/i/rq@pnoGhAQA "Perl 5 – Try It Online")
]