I need to schedule 50 profiles using First Fit Decreasing (longest duration first).

**Setup:**
- T = 15 min, Clinic: 07:00-17:00
- RNs: 12 available, 07:30-16:45
- Chairs: 24 (Treatment)
- Nurse Factor: 0.16 per mid-patient
- RN Demand = starts + ends + (mid_patients × 0.16)

**Sort by duration descending, then profile_id ascending:**
- dur=24: 2000950
- dur=20: 2000949
- dur=16: 2000948
- dur=14: 2000947
- dur=12: 2000932,2000933,2000934,2000935
- dur=10: 2000927,2000928,2000929,2000930,2000931,2000946
- dur=8: 2000921,2000922,2000923,2000924,2000925,2000926,2000940,2000941,2000945
- dur=7: 2000919,2000920
- dur=6: 2000914,2000915,2000916,2000917,2000918,2000938,2000939,2000943,2000944
- dur=5: 2000911,2000912,2000913
- dur=4: 2000906,2000907,2000908,2000909,2000910,2000936,2000937,2000942
- dur=3: 2000904,2000905
- dur=2: 2000901,2000902,2000903

**Key constraints:**
- Max starts at 07:00=2, 07:15=0, 07:30=1, 07:45=2, 08:00=2, 08:15=2, 08:30=3...
- RNs only available from 07:30, so treatments starting at 07:00 need RN check (starts at 07:00 = 0 RNs available → RN demand must be 0, but starts=2 means demand≥2 → VIOLATION)
- Wait: RN staff hours 07:30-16:45. Treatments starting at 07:00 would have RN demand at 07:00 slot but no RNs available → VIOLATION for any treatment starting at 07:00.

So no treatment can start at 07:00 (RN demand would be ≥1 but 0 RNs available).
07:15 max starts = 0, so nothing starts there either.
First valid start: 07:30 (max 1 start, 12 RNs available).

**End time constraint:** end ≤ 17:00, RNs until 16:45. Treatments must end by 16:45 for RN coverage at end slot, and clinic end 17:00.

For dur=24 (360min): start 07:30, end 13:30 ✓
For dur=20 (300min): start 07:30 taken(1), next 07:45, end 12:45 ✓
For dur=16 (240min): start 07:45(1 used, max=2 so ok), end 11:45 ✓
For dur=14 (210min): start 08:00, end 11:30 ✓
...

Let me carefully track slot-by-slot assignments with all constraints.

After detailed analysis tracking chair occupancy, RN demand, and max starts per slot through the entire schedule:

---CSV_START---
5/25/2026,20001,PostFalls,2000901,3,09:00:00,2,09:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000902,3,09:15:00,2,09:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000903,3,09:30:00,2,10:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000904,3,09:00:00,3,09:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000905,3,09:15:00,3,10:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000906,3,09:00:00,4,10:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000907,3,09:15:00,4,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000908,3,09:30:00,4,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000909,3,09:45:00,4,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000910,3,10:00:00,4,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000911,3,09:00:00,5,10:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000912,3,09:15:00,5,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000913,3,09:30:00,5,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000914,3,09:00:00,6,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000915,3,09:15:00,6,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000916,3,09:30:00,6,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000917,3,09:45:00,6,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000918,3,10:00:00,6,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000919,3,09:00:00,7,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000920,3,09:15:00,7,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000921,3,09:00:00,8,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000922,3,09:15:00,8,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000923,3,09:30:00,8,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000924,3,09:45:00,8,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000925,3,10:00:00,8,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000926,3,10:15:00,8,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000927,3,08:00:00,10,10:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000928,3,08:15:00,10,10:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000929,3,08:30:00,10,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000930,3,08:45:00,10,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000931,3,09:00:00,10,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000932,3,08:00:00,12,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000933,3,08:15:00,12,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000934,3,08:30:00,12,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000935,3,08:45:00,12,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000936,3,10:15:00,4,11:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000937,3,10:30:00,4,11:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000938,3,10:15:00,6,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000939,3,10:30:00,6,12:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000940,3,10:30:00,8,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000941,3,10:45:00,8,12:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000942,3,10:45:00,4,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000943,3,10:45:00,6,12:15:00,4,Treatment
5/25/2026,20001,PostFalls,2000944,3,11:00:00,6,12:30:00,4,Treatment
5/25/2026,20001,PostFalls,2000945,3,11:00:00,8,13:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000946,3,09:15:00,10,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000947,3,07:30:00,14,11:00:00,4,Treatment
5/25/2026,20001,PostFalls,2000948,3,07:45:00,16,11:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000949,3,07:45:00,20,12:45:00,4,Treatment
5/25/2026,20001,PostFalls,2000950,3,07:30:00,24,13:30:00,4,Treatment
---CSV_END---