ну, как я вижу, в первой части объявления цикла задаются начальные условия, они не пересчитываются каждый раз при итерации цикла, соответственно у вас g всегда равно p[l], на тот момент l == 0, соответственно g == p[0] (что тоже 0), поэтому пять раз срабатывает тело цикла, g всегда равно 0 -> d декрементится до нуля и цикл останавливается. Рекомендую объявлять цикл более классически:
for(var i = 0; i < n && d > 0; i++) {
var g = p[i];
...
}