I started with the assumption that what you're attempting to do can't be done natively. Access has no internal function that I know of to facilitate mirrored printing, which is essentially what you're trying to do.
Since I didn't think one report could do what you need, my idea was to split it into two subreports running concurrently, each handling half the data. In the example I posted, the queries "BottomHalf" and "TopHalf" split the data, and each one is used to run the "Inner" and "Outer" reports. These subreports are in turn put into the "ReportShell", so that they can all fit on the same page.
Attempting to run three columns complicates matters, because you now have to split your dataset into thirds, rather than halves. Getting the top and bottom third is easy enough; to get the middle third, you would need to identify everything that's not in the top and bottom third. It's still possible, however, as you can see in this revised example.