1. A method of making a three-dimensional memory array comprising: depositing one or more two-dimensional memory arrays of one-time programmable memory elements arranged in horizontal layers and stacked vertically upon one another, said one-time programmable memory elements being irreversibly programmable from a first state to a second state; and depositing a two-dimensional memory array of reprogrammable phase change memory elements stacked on said one or more two-dimensional memory arrays of one-time programmable memory elements.