This morning, Roman woke up and opened the browser with n opened tabs numbered from 1 to n. There are two kinds of tabs: those with the information required for the test and those with social network sites. Roman decided that there are too many tabs open so he wants to close some of them.

He decided to accomplish this by closing every k-th (2 ≤ k ≤ n - 1) tab. Only then he will decide whether he wants to study for the test or to chat on the social networks. Formally, Roman will choose one tab (let its number be b) and then close all tabs with numbers c = b + i ⋅ k that satisfy the following condition: 1 ≤ c ≤ n and i is an integer (it may be positive, negative or zero).

For example, if k = 3, n = 14 and Roman chooses b = 8, then he will close tabs with numbers 2, 5, 8, 11 and 14.

After closing the tabs Roman will calculate the amount of remaining tabs with the information for the test (let's denote it e) and the amount of remaining social network tabs (s). Help Roman to calculate the maximal absolute value of the difference of those values |e - s| so that it would be easy to decide what to do next.

Input

The first line contains two integers n and k (2 ≤ k < n ≤ 100) — the amount of tabs opened currently and the distance between the tabs closed.

The second line consists of n integers, each of them equal either to 1 or to -1. The i-th integer denotes the type of the i-th tab: if it is equal to 1, this tab contains information for the test, and if it is equal to -1, it's a social network tab.

Output

Output a single integer — the maximum absolute difference between the amounts of remaining tabs of different types |e - s|.

Examples

Input


4 2
1 1 -1 1


Output


2


Input


14 3
-1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1


Output


9

Note

In the first example we can choose b = 1 or b = 3. We will delete then one tab of each type and the remaining tabs are then all contain test information. Thus, e = 2 and s = 0 and |e - s| = 2.

In the second example, on the contrary, we can leave opened only tabs that have social networks opened in them.
import java.io.*;
import java.util.*;

public class Solution {

	public static void main(String[] args) throws IOException {
		InputReader in = new InputReader(System.in);
		OutputWriter out = new OutputWriter(System.out);
//		InputReader in = new InputReader("/Users/AMANRAJ/Documents/workspace/Competitive/src/input.txt");
//		OutputWriter out = new OutputWriter("/Users/AMANRAJ/Documents/workspace/Competitive/src/output.txt");
		Task task = new Task();
		int t = 1;
		for (int i = 1; i <= t; i++) task.solve(i, in, out);
		out.close();
	}

	static class Task {
		
		public void solve(int testNumber, InputReader in, OutputWriter out) throws IOException {
			int n = in.nextInt(), k = in.nextInt();
			int[] a = in.nextIntArray(n, 0);
			int te = 0, ts = 0;
			for (int i = 0; i < n; i++) {
				if (a[i] == 1) te++;
				else ts++;
			}
			int ans = 0;
			for (int b = 1; b < n; b++) {
				int e = 0, s = 0;
				for (int i = -n; i < n; i++) {
					int c = b + i * k;
					if (c > n || c <= 0) continue;
					if (a[c - 1] == 1) e++;
					else s++;
				}
				ans = Math.max(ans, Math.abs((te - e) - (ts - s)));
			}
			out.println(ans, "\n");
 		}
	}
	
	static class InputReader {
		private BufferedReader reader;
		private StringTokenizer tokenizer;

		public InputReader(InputStream stream) {
			reader = new BufferedReader(new InputStreamReader(stream), 32768);
			tokenizer = null;
		}
		
		public InputReader(String file) throws FileNotFoundException {
			reader = new BufferedReader(new FileReader(file));
			tokenizer = null;
		}
		
		private void tokenize() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
		}

		public String next() {
			tokenize();
			return tokenizer.nextToken();
		}

		public int nextInt() {
			return Integer.parseInt(next());
		}

		public long nextLong() {
			return Long.parseLong(next());
		}
		
		public char nextChar() {
			return next().charAt(0);
		}
		
		public float nextFloat() {
			return Float.parseFloat(next());
		}
		
		public double nextDouble() {
			return Double.parseDouble(next());
		}

		public int[] nextIntArray(int size, int a) {
			tokenize();
			int[] arr=new int[size];
			for(int i = a; i < size; i++) {
				tokenize();
				arr[i] = Integer.parseInt(tokenizer.nextToken());
			}
			return arr;
		}
		
		public long[] nextLongArray(int size, int a) {
			tokenize();
			long[] arr=new long[size];
			for(int i = a; i < size; i++) {
				tokenize();
				arr[i] = Long.parseLong(tokenizer.nextToken());
			}
			return arr;
		}
		
		public float[] nextFloatArray(int size, int a) {
			tokenize();
			float[] arr=new float[size];
			for(int i = a; i < size; i++) {
				tokenize();
				arr[i] = Float.parseFloat(tokenizer.nextToken());
			}
			return arr;
		}

		public double[] nextDoubleArray(int size, int a) {
			tokenize();
			double[] arr=new double[size];
			for(int i = a; i < size; i++) {
				tokenize();
				arr[i] = Double.parseDouble(tokenizer.nextToken());
			}
			return arr;
		}

		public String[] nextStringArray(int size, int a) throws IOException {
			String[] arr=new String[size];
			for(int i = a; i < size; i++) 
				arr[i] = reader.readLine();
			return arr;
		}

		public char[] nextCharArray() throws IOException {
			return reader.readLine().toCharArray();
		}
	}

	static class OutputWriter {
		public PrintWriter pw;

		public OutputWriter(OutputStream stream) {
			pw = new PrintWriter(stream);
		}
		
		public OutputWriter(String file) throws IOException {
			pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
		}
		
		public void println() {
			pw.println();
		}
		
		public void println(Object... obj) {
			String delimiter = (String) obj[obj.length - 1];
			for (int i = 0 ; i < obj.length - 1; i++) pw.print(obj[i] + delimiter);
			pw.println();
		}

		public void close() {
			pw.close();
		}

		public void flush() {
			pw.flush();
		}

		public void printStringArray(String[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.println(arr[i]);
			pw.println();
		}
		
		public void printBooleanArray(boolean[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}

		public void printIntArray(int[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}

		public void printLongArray(long[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}

		public void printCharArray(char[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}

		public void printFloatArray(float[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}

		public void printDoubleArray(double[] arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr[i] + delimiter);
			pw.println();
		}
		
		public void printIntArrayList(ArrayList<Integer> arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr.get(i) + delimiter);
			pw.println();
		}
		
		public void printLongArrayList(ArrayList<Long> arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr.get(i) + delimiter);
			pw.println();
		}
		
		public void printStringArrayList(ArrayList<String> arr, int a, int b, String delimiter) {
			for(int i = a; i < b; i++)
				pw.print(arr.get(i) + delimiter);
			pw.println();
		}
	}
}
