<s>[INST] You're given two arrays of integers - one representing the heights of buildings and the other representing the number of buildings to be drawn in each height. It is required to draw each set of buildings of the same height together. For example, if the heights array is `[5, 3, 4]` and the numbers array is `[2, 3, 4]`, we should first draw 2 buildings of height 5, then 3 buildings of height 3 and so on. We are also given a grid representing the skyline. The task is to fill in the skyline grid with asterisks (\*) representing the buildings.
 
 Here is an example of how the function `draw` should work:
```
function draw(heights, numbers, grid) {
  // TO DO: implement the function
}

let heights = [5, 3, 4];
let numbers = [2, 3, 4];
let grid = Array(6).fill().map(() => Array(10).fill(' '));

draw(heights, numbers, grid);

grid.forEach(row => console.log(row.join('')));
```

The expected output of the given example should be:
```
*****      ****
*****      *****
  ***  ***  *** 
  ***  ***  *** 
  ***  ***  *** 
      ***  *** 
```

So, the vertical stacks of asterisks (\*) should start from left in each row based on the corresponding height in the heights array and the number of buildings to be drawn for that height.

Could you please help with implementing the `draw` function?[/INST]