# 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 -->