# JavaScript (ES6), 64 bytes
f=([n,...a],z=[],q=[n,...z])=>a+a?n<a[0]?[...q,...f(a)]:f(a,q):q
Recursion FTW!
### Test snippet
<!-- begin snippet: js hide: true console: true babel: false -->
<!-- language: lang-js -->
f=([n,...a],z=[],q=[n,...z])=>a+a?n<a[0]?[...q,...f(a)]:f(a,q):q
g=a=>console.log("Input:",`[${a}]`,"Output:",`[${f(a)}]`)
g([1])
g([1,1])
g([1,2])
g([2,1])
g([3,2,1])
g([3,1,2])
g([3,1,1,2])
g([5,2,7,6,4,1,3])
<!-- language: lang-html -->
<input id=I value="5, 2, 7, 6, 4, 1, 3">
<button onclick="g((I.value.match(/\d+/g)||[]).map(Number))">Run</button>
<!-- end snippet -->