<p>You are given a <strong>0-indexed</strong> 2D integer array <code>grid</code> of size <code>m x n</code> that represents a map of the items in a shop. The integers in the grid represent the following:</p>
<ul>
<li><code>0</code> represents a wall that you cannot pass through.</li>
<li><code>1</code> represents an empty cell that you can freely move to and from.</li>
<li>All other positive integers represent the price of an item in that cell. You may also freely move to and from these item cells.</li>
</ul>
<p>It takes <code>1</code> step to travel between adjacent grid cells.</p>
<p>You are also given integer arrays <code>pricing</code> and <code>start</code> where <code>pricing = [low, high]</code> and <code>start = [row, col]</code> indicates that you start at the position <code>(row, col)</code> and are interested only in items with a price in the range of <code>[low, high]</code> (<strong>inclusive</strong>). You are further given an integer <code>k</code>.</p>
<p>You are interested in the <strong>positions</strong> of the <code>k</code><strong>highest-ranked</strong> items whose prices are <strong>within</strong> the given price range. The rank is determined by the <strong>first</strong> of these criteria that is different:</p>
<ol>
<li>Distance, defined as the length of the shortest path from the <code>start</code> (<strong>shorter</strong> distance has a higher rank).</li>
<li>Price (<strong>lower</strong> price has a higher rank, but it must be <strong>in the price range</strong>).</li>
<li>The row number (<strong>smaller</strong> row number has a higher rank).</li>
<li>The column number (<strong>smaller</strong> column number has a higher rank).</li>
</ol>
<p>Return <em>the </em><code>k</code><em> highest-ranked items within the price range <strong>sorted</strong> by their rank (highest to lowest)</em>. If there are fewer than <code>k</code> reachable items within the price range, return <em><strong>all</strong> of them</em>.</p>