Print arrays from the middle out This is a code-golf question. 

Given integers s and n the task is to output all arrays of length n which take values from -s to s.  The only twist is that you must output them in the following order.


The all zeros array of length n.
All arrays of length n with elements from -1 to 1 excluding any array you have outputted before.
All arrays of length n with elements from -2 to 2 excluding any array you have outputted before.
And so on until you get to all arrays of length n with elements from -s to s excluding any array you have outputted before.


You should output one array per line. They can be space or comma separated.

Here is some non-complying python code that outputs the arrays/lists/tuples in the right order.

import itertools

s =  3
n = 2

oldsofar = set()
newsofar = set()
for i in xrange(s):
    for k in itertools.product(range(-i,i+1), repeat = n):
        newsofar.add(k)
    print newsofar - oldsofar
    oldsofar = newsofar.copy()
    print "***"


Extra glory (and an upvote from me) for answers  that perform no set subtraction or equivalent.
MATL, 18 bytes
_G2$:iZ^t!|X&gt;4#SY)

First input is s, second is n
This works in current version (15.0.0) of the language.
Try it online!
Explanation
_      % take input s implicitly. Negate to obtain -s
G      % push input s again
2$:    % inclusive range from -s to s
i      % take input n
Z^     % Cartesian power. Gives 2D array, with each result on a row
t!     % duplicate and transpose
|      % absolute value
X&gt;     % maximum of each column 
4#S    % sort and push the indices of the sorting
Y)     % apply as row indices into the 2D array. Display implicitly