
typedef struct Node{

	struct Node* next;
	int value;

} Node;

void main () {


  Node a; 
  Node b;
  Node c;

  a.next = &b;
  b.next = &c;
  c.next = &a;
  
  a.value = 3;
  b.value = a.value+2; //b.value = 5
  c.value = b.value*2; //c.value = 10
  
  #pragma TASS assert a.value == 3;
  #pragma TASS assert b.value == 5;
  #pragma TASS assert c.value == 10;
  
  a.value = a.next->value; //a.value = 5
  b.value = (*b.next).value-2; //b.value = 8
  (*b.next).value = c.value + a.value - a.next->value; //c->value = 7
  
  #pragma TASS assert a.value == 5;
  #pragma TASS assert b.value == 8;
  #pragma TASS assert c.value == 7;
  
  (*a.next).next = (*a.next->next).next->next; //b.next = &b;
  
  #pragma TASS assert b.next->value == b.value;
  
  a.value = a.value%2;
  
  #pragma TASS assert a.value == 1;
  
}
