<p>You are given <code>n</code> tasks labeled from <code>0</code> to <code>n - 1</code> represented by a 2D integer array <code>tasks</code>, where <code>tasks[i] = [enqueueTime<sub>i</sub>, processingTime<sub>i</sub>]</code> means that the <code>i<sup>th</sup></code> task will be available to process at <code>enqueueTime<sub>i</sub></code> and will take <code>processingTime<sub>i</sub></code><sub></sub>to finish processing.</p>
<p>You have a single-threaded CPU that can process <strong>at most one</strong> task at a time and will act in the following way:</p>
<ul>
<li>If the CPU is idle and there are no available tasks to process, the CPU remains idle.</li>
<li>If the CPU is idle and there are available tasks, the CPU will choose the one with the <strong>shortest processing time</strong>. If multiple tasks have the same shortest processing time, it will choose the task with the smallest index.</li>
<li>Once a task is started, the CPU will <strong>process the entire task</strong> without stopping.</li>
<li>The CPU can finish a task then start a new one instantly.</li>
</ul>
<p>Return <em>the order in which the CPU will process the tasks.</em></p>