Annoying Quaternions and Eulers

private Vector3 v3;

void Start () {
	v3 = new Vector3 (0f, 359f, 0f);
	Debug.Log ("" + transform.rotation.eulerAngles);
	Debug.Log ("" + v3);
	transform.Rotate (v3);
}

// Update is called once per frame
void FixedUpdate () {
	v3.y = v3.y + 3f;
	transform.Rotate (v3);
	Debug.Log ("tr " + transform.rotation.eulerAngles);
	Debug.Log ("v3 " + v3);
	v3 = transform.rotation.eulerAngles;
	Debug.Log ("---------------------------------------------------");
}

and here is my log:

359 degree + 3 becomes 1 degree, 5 + 3 becomes 13, 13 + 3 becomes 29
i just have no idea

I am Idiot
.Rotate do not apply new angles from arguments, it adds floats from arguments to existing angles floats