The methods may include {HEAD ~ steps} of dividing data blocks into a plurality of square portions, and exchanging data in sets of blocks of each of the square portions, with the exchanging step including locating a diagonal set of blocks within a selected square portion, and exchanging {TAIL ~ all sets} of blocks equidistant from the diagonal, on opposite sides of the diagonal, and in a line perpendicular to the diagonal 
The methods may include { HEAD ~ steps } of dividing data blocks into a plurality of square portions , and exchanging data in sets of blocks of each of the square portions , with the exchanging step including locating a diagonal set of blocks within a selected square portion , and exchanging { TAIL ~ all sets } of blocks equidistant from the diagonal , on opposite sides of the diagonal , and in a line perpendicular to the diagonal
OTH OTH OTH OTH HEAD HEAD HEAD HEAD HEAD REL OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH REL TAIL TAIL TAIL TAIL TAIL TAIL OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH OTH