/**
 * @author Daniel "3ICE" Berezvai
 */
import java.util.*;
import java.lang.*;
public class Vector {
	private LinkedList<Integer> b;

	//ctor
	public Vector(int[] initData){
		b=new LinkedList<>();
		for(int i=0;i<initData.length;i++){
			b.add(initData[i]);
		}
	}

	//copy ctor
	private Vector(LinkedList<Integer> initData){
		b=new LinkedList<>(initData);
//3ICE: Nem kell másolni:
//		for(int i=0;i<initData.size();i++){
//			b.add(initData.get(i));
//		}
	}

	//updated to use StringBuilder
	public void show(){
		StringBuilder sb=new StringBuilder();
		sb.append("[");
		for(int i=0;i<b.size()-1;i++){
			sb.append(b.get(i));
			sb.append(",");
		}
	sb.append(b.get(b.size()-1));
	sb.append("]");
	System.out.println(sb.toString());
	}

	public Vector addVector(Vector v){
		//3ICE: As a bonus, handles different sized vectors.
		int size_a=v.b.size();
		int size_b=b.size();
		int size=1;
		if(size_a>=size_b){
			size=size_a;
		}else{
			size=size_b;
		}
		int[] r=new int[size];
		for(int i=0;i<size;i++){
			if(i<size_a&&i<size_b) r[i]=v.b.get(i)+b.get(i);
			else if(i<size_a) r[i]=v.b.get(i);
			else r[i]=b.get(i);
		}
		return new Vector(r);
	}

	public int scalarProd(Vector v){
		int size=v.b.size();
		int r=0;
		for(int i=0;i<size;i++){
			r+=v.b.get(i)*b.get(i);
		}
		return r;
	}
	
	//replaces most of main's loadInputs()
	public static Vector parseVector(String s){
		Scanner sc = new Scanner(s);
		sc.useDelimiter(",");
		LinkedList<Integer> v=new LinkedList<>();
		while(sc.hasNextInt()){
			v.add(sc.nextInt());
		}
		return new Vector(v);
	}

	//destructive (overwrites self)
	private void add(int cons){
		for(int i=0;i<b.size();i++){
			b.set(i, b.get(i)+cons);
		}
	}

	//non-destructive
	public Vector plus(int p){
		Vector r = new Vector(b);
//3ICE: Régi megoldás így nézett ki:
//		LinkedList<Integer> r=new LinkedList<>(b);
//		for(int i=0;i<b.size();i++){
//			r.add(b.get(i)+p);
//		}
		r.add(p);
		return r;
	}
}