import sys
def solve():
n = int(sys.stdin.readline())
a = list(map(int, sys.stdin.readline().split()))
if n % 2 == 1:
# Partition into one block of size 3 and (n-3)/2 blocks of size 2.
# We iterate through all n possible starting positions for the size-3 block.
c2 = [(abs(a[i] - a[(i + 1) % n])) for i in range(n)]
s_even = 0
s_odd = 0
for i in range(n):
if i % 2 == 0:
s_even += c2[i]
else:
s_odd += c2[i]
min_cost = float('inf')
for i in range(n):
# Block of size 3 starts at index i
# The elements are a[i], a[i+1], a[i+2]
# Cost for the block of 3
v1 = a[i]
v2 = a[(i + 1) % n]
v3 = a[(i + 2) % n]
elements = sorted([v1, v2, v3])
median = elements[1]
cost3 = abs(v1 - median) + abs(v2 - median) + abs(v3 - median)
# Cost for the remaining n-3 elements, paired up
# These are pairs (i+3, i+4), (i+5, i+6), ...
# The c2 costs are c2[i+3], c2[i+5], ...
cost_pairs = 0
if i % 2 == 0:
cost_pairs = s_odd - c2[(i + 1) % n]
else:
cost_pairs = s_even - c2[(i + 2) % n] - c2[i]
total_cost = cost3 + cost_pairs
min_cost = min(min_cost, total_cost)
print(min_cost)
else:
# Partition into n/2 blocks of size 2.
# Two possible pairing strategies.
# Strategy 1: pairs (0,1), (2,3), ...
cost1 = 0
for i in range(0, n, 2):
cost1 += abs(a[i] - a[i + 1])
# Strategy 2: pairs (1,2), (3,4), ..., (n-1,0)
cost2 = 0
for i in range(1, n, 2):
cost2 += abs(a[i] - a[(i + 1) % n])
print(min(cost1, cost2))
def main():
t = int(sys.stdin.readline())
for _ in range(t):
solve()
if __name__ == "__main__":
main()
aW1wb3J0IHN5cwoKZGVmIHNvbHZlKCk6CiAgICBuID0gaW50KHN5cy5zdGRpbi5yZWFkbGluZSgpKQogICAgYSA9IGxpc3QobWFwKGludCwgc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3BsaXQoKSkpCgogICAgaWYgbiAlIDIgPT0gMToKICAgICAgICAjIFBhcnRpdGlvbiBpbnRvIG9uZSBibG9jayBvZiBzaXplIDMgYW5kIChuLTMpLzIgYmxvY2tzIG9mIHNpemUgMi4KICAgICAgICAjIFdlIGl0ZXJhdGUgdGhyb3VnaCBhbGwgbiBwb3NzaWJsZSBzdGFydGluZyBwb3NpdGlvbnMgZm9yIHRoZSBzaXplLTMgYmxvY2suCiAgICAgICAgCiAgICAgICAgYzIgPSBbKGFicyhhW2ldIC0gYVsoaSArIDEpICUgbl0pKSBmb3IgaSBpbiByYW5nZShuKV0KICAgICAgICAKICAgICAgICBzX2V2ZW4gPSAwCiAgICAgICAgc19vZGQgPSAwCiAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgIGlmIGkgJSAyID09IDA6CiAgICAgICAgICAgICAgICBzX2V2ZW4gKz0gYzJbaV0KICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHNfb2RkICs9IGMyW2ldCgogICAgICAgIG1pbl9jb3N0ID0gZmxvYXQoJ2luZicpCgogICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgICAgICAjIEJsb2NrIG9mIHNpemUgMyBzdGFydHMgYXQgaW5kZXggaQogICAgICAgICAgICAjIFRoZSBlbGVtZW50cyBhcmUgYVtpXSwgYVtpKzFdLCBhW2krMl0KICAgICAgICAgICAgCiAgICAgICAgICAgICMgQ29zdCBmb3IgdGhlIGJsb2NrIG9mIDMKICAgICAgICAgICAgdjEgPSBhW2ldCiAgICAgICAgICAgIHYyID0gYVsoaSArIDEpICUgbl0KICAgICAgICAgICAgdjMgPSBhWyhpICsgMikgJSBuXQogICAgICAgICAgICAKICAgICAgICAgICAgZWxlbWVudHMgPSBzb3J0ZWQoW3YxLCB2MiwgdjNdKQogICAgICAgICAgICBtZWRpYW4gPSBlbGVtZW50c1sxXQogICAgICAgICAgICBjb3N0MyA9IGFicyh2MSAtIG1lZGlhbikgKyBhYnModjIgLSBtZWRpYW4pICsgYWJzKHYzIC0gbWVkaWFuKQoKICAgICAgICAgICAgIyBDb3N0IGZvciB0aGUgcmVtYWluaW5nIG4tMyBlbGVtZW50cywgcGFpcmVkIHVwCiAgICAgICAgICAgICMgVGhlc2UgYXJlIHBhaXJzIChpKzMsIGkrNCksIChpKzUsIGkrNiksIC4uLgogICAgICAgICAgICAjIFRoZSBjMiBjb3N0cyBhcmUgYzJbaSszXSwgYzJbaSs1XSwgLi4uCiAgICAgICAgICAgIAogICAgICAgICAgICBjb3N0X3BhaXJzID0gMAogICAgICAgICAgICBpZiBpICUgMiA9PSAwOgogICAgICAgICAgICAgICAgY29zdF9wYWlycyA9IHNfb2RkIC0gYzJbKGkgKyAxKSAlIG5dCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjb3N0X3BhaXJzID0gc19ldmVuIC0gYzJbKGkgKyAyKSAlIG5dIC0gYzJbaV0KCiAgICAgICAgICAgIHRvdGFsX2Nvc3QgPSBjb3N0MyArIGNvc3RfcGFpcnMKICAgICAgICAgICAgbWluX2Nvc3QgPSBtaW4obWluX2Nvc3QsIHRvdGFsX2Nvc3QpCiAgICAgICAgICAgIAogICAgICAgIHByaW50KG1pbl9jb3N0KQoKICAgIGVsc2U6CiAgICAgICAgIyBQYXJ0aXRpb24gaW50byBuLzIgYmxvY2tzIG9mIHNpemUgMi4KICAgICAgICAjIFR3byBwb3NzaWJsZSBwYWlyaW5nIHN0cmF0ZWdpZXMuCiAgICAgICAgCiAgICAgICAgIyBTdHJhdGVneSAxOiBwYWlycyAoMCwxKSwgKDIsMyksIC4uLgogICAgICAgIGNvc3QxID0gMAogICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG4sIDIpOgogICAgICAgICAgICBjb3N0MSArPSBhYnMoYVtpXSAtIGFbaSArIDFdKQogICAgICAgICAgICAKICAgICAgICAjIFN0cmF0ZWd5IDI6IHBhaXJzICgxLDIpLCAoMyw0KSwgLi4uLCAobi0xLDApCiAgICAgICAgY29zdDIgPSAwCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbiwgMik6CiAgICAgICAgICAgIGNvc3QyICs9IGFicyhhW2ldIC0gYVsoaSArIDEpICUgbl0pCiAgICAgICAgICAgIAogICAgICAgIHByaW50KG1pbihjb3N0MSwgY29zdDIpKQoKCmRlZiBtYWluKCk6CiAgICB0ID0gaW50KHN5cy5zdGRpbi5yZWFkbGluZSgpKQogICAgZm9yIF8gaW4gcmFuZ2UodCk6CiAgICAgICAgc29sdmUoKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oKQ==