allocatemem(20*10^6);
cmp(x, y) = sign(x[1] - y[1])*8 + sign(x[2] - y[2])*4 + sign(x[3] - y[3])*2 + sign(x[4] - y[4]);
filter_output(p, v) = vecsort(vector(#v, j, [valuation(poldisc(v[j][1]), p), v[j][2], v[j][3], v[j][4]]), cmp);

p = 2; for (d = 2, 50, if (d%p, print(filter_output(p, padicfields(p, d, 1)))))
p = 3; for (d = 2, 50, if (d%p, print(filter_output(p, padicfields(p, d, 1)))))
filter_output(2, padicfields(2, 105, 1))
filter_output(5, padicfields(5, 21, 1))
filter_output(23, padicfields(23, 55, 1))
filter_output(23459, padicfields(23459, 12, 1))
filter_output(2, padicfields(2, [8, 12], 1))
