A method for performing a programming operation for a group of non-volatile storage elements (M0-M15) in communication with a word line (WL0-WL3), comprising: performing a programming portion of a program-verify iteration (PV0A, PV1A, PV2A; PV0B, PV1B, PV2B, PV3B, PV4B; PV0C, PV1C, PV2C, PV3C; PV0D, PV1D, PV2D, PV3D, PV4D) of the programming operation (1100, 1200, 1300, 1400), the performing the programming portion comprises: applying N successive programming pulses (P0-P51), to the word line, the group comprises N adjacent sets (S0-S7) of non-volatile storage elements, each of the N adjacent sets comprises N adjacent non-volatile storage elements (M0-M15), and N is a natural number of three or more; and is characterised by: for each of the N successive programming pulses, selecting one of the non-volatile storage elements in each of the N adjacent sets according to a pattern which indicates a relative position of the selected one of the non-volatile storage elements in each of the N adjacent sets, the relative position is different for each of the N adjacent sets, allowing the selected one of the non-volatile storage elements in each of the N adjacent sets to program if a threshold voltage of the selected one of the non-volatile storage elements in each of the N adjacent sets has not yet reached a target verify level (VvaL, Vva, VvbL, Vvb, VvcL, Vvc), and prohibiting unselected non-volatile storage elements in each of the N adjacent sets from programming regardless of whether threshold voltages of the unselected non-volatile storage elements in each of the N adjacent sets have reached respective target verify levels; and subsequently performing a verify operation of the program-verify iteration for the group. performing a programming portion of a program-verify iteration (PV0A, PV1A, PV2A; PV0B, PV1B, PV2B, PV3B, PV4B; PV0C, PV1C, PV2C, PV3C; PV0D, PV1D, PV2D, PV3D, PV4D) of the programming operation (1100, 1200, 1300, 1400), the performing the programming portion comprises: applying N successive programming pulses (P0-P51), to the word line, the group comprises N adjacent sets (S0-S7) of non-volatile storage elements, each of the N adjacent sets comprises N adjacent non-volatile storage elements (M0-M15), and N is a natural number of three or more; and is characterised by: for each of the N successive programming pulses, selecting one of the non-volatile storage elements in each of the N adjacent sets according to a pattern which indicates a relative position of the selected one of the non-volatile storage elements in each of the N adjacent sets, the relative position is different for each of the N adjacent sets, allowing the selected one of the non-volatile storage elements in each of the N adjacent sets to program if a threshold voltage of the selected one of the non-volatile storage elements in each of the N adjacent sets has not yet reached a target verify level (VvaL, Vva, VvbL, Vvb, VvcL, Vvc), and prohibiting unselected non-volatile storage elements in each of the N adjacent sets from programming regardless of whether threshold voltages of the unselected non-volatile storage elements in each of the N adjacent sets have reached respective target verify levels; and subsequently performing a verify operation of the program-verify iteration for the group. applying N successive programming pulses (P0-P51), to the word line, the group comprises N adjacent sets (S0-S7) of non-volatile storage elements, each of the N adjacent sets comprises N adjacent non-volatile storage elements (M0-M15), and N is a natural number of three or more; and is characterised by: for each of the N successive programming pulses, selecting one of the non-volatile storage elements in each of the N adjacent sets according to a pattern which indicates a relative position of the selected one of the non-volatile storage elements in each of the N adjacent sets, the relative position is different for each of the N adjacent sets, allowing the selected one of the non-volatile storage elements in each of the N adjacent sets to program if a threshold voltage of the selected one of the non-volatile storage elements in each of the N adjacent sets has not yet reached a target verify level (VvaL, Vva, VvbL, Vvb, VvcL, Vvc), and prohibiting unselected non-volatile storage elements in each of the N adjacent sets from programming regardless of whether threshold voltages of the unselected non-volatile storage elements in each of the N adjacent sets have reached respective target verify levels; and subsequently performing a verify operation of the program-verify iteration for the group. for each of the N successive programming pulses, selecting one of the non-volatile storage elements in each of the N adjacent sets according to a pattern which indicates a relative position of the selected one of the non-volatile storage elements in each of the N adjacent sets, the relative position is different for each of the N adjacent sets, allowing the selected one of the non-volatile storage elements in each of the N adjacent sets to program if a threshold voltage of the selected one of the non-volatile storage elements in each of the N adjacent sets has not yet reached a target verify level (VvaL, Vva, VvbL, Vvb, VvcL, Vvc), and prohibiting unselected non-volatile storage elements in each of the N adjacent sets from programming regardless of whether threshold voltages of the unselected non-volatile storage elements in each of the N adjacent sets have reached respective target verify levels; and subsequently performing a verify operation of the program-verify iteration for the group.