Input: people = [3,5,3,4], limit = 5
Explanation: 1. `people = [3,5,3,4]`, `limit = 5`. Sort: `[3, 3, 4, 5]`. `res=0`, `l=0`, `r=3`.
2. Loop 1: `l=0, r=3` (person 5).
`remain = 5 - people[3] = 5 - 5 = 0`. `r` becomes `2`. `res` becomes `1`.
`l <= r` (0 <= 2) is true. `remain (0) >= people[0] (3)` is false.
3. Loop 2: `l=0, r=2` (person 4).
`remain = 5 - people[2] = 5 - 4 = 1`. `r` becomes `1`. `res` becomes `2`.
`l <= r` (0 <= 1) is true. `remain (1) >= people[0] (3)` is false.
4. Loop 3: `l=0, r=1` (person 3).
`remain = 5 - people[1] = 5 - 3 = 2`. `r` becomes `0`. `res` becomes `3`.
`l <= r` (0 <= 0) is true. `remain (2) >= people[0] (3)` is false.
5. Loop 4: `l=0, r=0` (person 3).
`remain = 5 - people[0] = 5 - 3 = 2`. `r` becomes `-1`. `res` becomes `4`.
`l <= r` (0 <= -1) is false.
6. Loop 5: `l=0, r=-1`. `l <= r` (0 <= -1) is false. Loop ends.
Final `res`: `4`.
Explanation: (5) alone, (4) alone, (3) alone, (3) alone. Total boats: 4.