1. A method of managing a flash memory, comprising the steps of: (a) selecting a value of a number N≧3 of respective bits of data to be stored in each of a plurality of cells of at least a portion of the flash memory; (b) reserving a single other cell of the flash memory to use as a flag cell to represent a value of how many of said N bits are stored in each said cell of said plurality of cells; and (c) successively, for each value of n between 1 and N: (i) programming each said cell of said plurality of cells to represent a respective n bits of said data, and (ii) programming said flag cell to represent n; wherein said successive programming of each said cell of said plurality of cells and of said flag cell is completed without erasing any of said cells of said plurality of cells and without erasing said flag cell until after said cells of said plurality of cells and said flag cell have been programmed at n=N.