package main
import (
"fmt"
)
func push [T any](arr []T, ele T) []T {
return append(arr, ele)
}
func remove [T any](arr []T) []T {
newArr := arr[:len(arr) - 1]
return newArr
}
func pop [T any](arr *[]T) T {
lastElement := (*arr)[len(*arr) - 1]
*arr = (*arr)[:len(*arr)-1]
return lastElement
}
func dequeue [T any](arr *[]T) T {
firstElement := (*arr)[0]
*arr = (*arr)[1:]
return firstElement
}
func main() {
sampleArr := []int{1,2,3}
fmt.Println(push(sampleArr, 4))
fmt.Println(remove(sampleArr))
fmt.Println(pop(&sampleArr))
fmt.Println(sampleArr)
fmt.Println(dequeue(&sampleArr))
fmt.Println(sampleArr)
}