a:6:{i:0;s:12244:"				<div class="h1"><h1>Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kwik2travels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kwik2travels.co.in/travel-packages.htm" title="Travel Packages">Travel Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Sydney, Brisbane</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kwik2travels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="144488"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_10/288293/225230.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/288293/225230.jpg"  width="150" height="150"    alt="Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney" title="Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Hotel Details -<br />
<br />
Gold Coast: Mantra Suncity <br />
Cairns: Cairns Colonial Club <br />
ORBay village Tropical Retreat <br />
ORCairns Plaza <br />
<br />
Sydney: Travelodge SydneyReturn airfare in economy class with taxes <br />
<br />
Any Meals other than specified in inclusions. <br />
<br />
Personal expenses such as tips, porterage, telephone calls, rooms service, etc. <br />
<br />
Surcharge will be applicable on particular events, festival, exhibition & fairs. <br />
<br />
Any security deposit asked by the hotel during check in. <br />
<br />
Travel Insurance. <br />
<br />
Visa Charges. <br />
<br />
GST extra.<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> 
								</p>
								<p class="aj">Arrive Brisbane or Gold Coast Airport within 2330 hrs and SIC Transfer to your Hotel (Early Check-in is Not Guaranteed). Overnight</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> 
								</p>
								<p class="aj">Breakfast. Return SIC transfer for Dreamworld admission. Overnight at your Hotel</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> 
								</p>
								<p class="aj">Breakfast. Return SIC transfer to Seaworld OR Movieworld admission (Choice of 1 Theme Park - must be pre-booked). Overnight at your Hotel</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> 
								</p>
								<p class="aj">Breakfast. Check-out & SIC transfer to Brisbane or Gold Coast Airport. Arrive Cairns Airport within 2230 hrs & SIC Transfer to Hotel. Check-in. Day Free & Overnight</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> 
								</p>
								<p class="aj">Breakfast. Full Day SIC Big Cat Cruise Tour to Green Island Reef with Buffet Lunch, Semi-submarine & Glass bottom boat OR Snorkelling Gears (Pak 4). Overnight (Upgrade options to Sunlover Outer Barrier Reef Cruise with Vegetarian Lunch available at Supplement Cost Extra AUD40/Adult & AUD15/Child)</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> 
								</p>
								<p class="aj">Breakfast. Depart for Cairns Airport by SIC Transfer for your onward flight. Arrive Sydney Airport within 2200hrs & SIC Transfer to your Hotel. Overnight at your Hotel</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> 
								</p>
								<p class="aj">Morning Half Day SIC Sydney City Sight with views of Opera House & Harbour Bridge from Milsons Point, Manly Beach, etc. No Hotel Drop, this Tour ends by 1145hrs near Darling Harbour or Circular Quay Get down nearest to King Street Wharf, Darling Harbor. Proceed to Sea Life Aquarium at Darling Harbour to exchange Combo 2 Pass voucher for admissions to Sea Life Aquarium + Sydney Tower Eye with 4D Experience (Transfers to Aquarium & Tower are Not Included). <br />
<br />
Evening proceed on OWN to King Street Wharf #5, Darling Harbour by 1850-1900hrs to join Sydney Show Boat Indian Dinner Cruise with Standard Seating (No Transfers - Cruise does Not operates on TUESDAY, THURSDAYS & SUNDAY and No Operations on 06OCT, 25, 26, 31DEC, 01JAN, 26JAN, 14FEB )</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> 
								</p>
								<p class="aj">Full Day SIC Tour - Blue Mountains Tour with Wildlife Park & Scenic Rides at Scenic World</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> 
								</p>
								<p class="aj">Breakfast. Check Out of Hotel. SIC transfer to Sydney Airport for onward flight.</p>					
									<p><b>Meals : </b> Breakfast</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																<li>03 Nights accommodation at Hotel Mantra Suncity or similar, Gold Coast. </li><li>
02 Nights accommodation at Cairns Plaza or similar, Cairns. </li><li>
03 Nights accommodation at Travelodge or similar, Sydney. </li><li>
Daily breakfast at hotel. </li><li>
All transfers and sightseeing as per the itinerary </li><li>
All tours & transfers on Seat in coach basis.</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Return airfare in economy class with taxes </li><li>
Any Meals other than specified in inclusions. </li><li>
Personal expenses such as tips, porterage, telephone calls, rooms service, etc. </li><li>
Surcharge will be applicable on particular events, festival, exhibition & fairs. </li><li>
Any security deposit asked by the hotel during check in. </li><li>
Travel Insurance. </li><li>
Visa Charges. </li><li>
GST extra.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~						
    	<p class="h dif xlarge b mb5px">Package Rates</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Twin Sharing</td>
				<td class="headHr p5px b">INR 70000 </td>
			</tr>
			<tr>
				<td class="data p5px">Triple Sharing</td>
				<td class="data p5px">INR 69000</td>
			</tr>
			<tr>
				<td class="data p5px">Single Sharing</td>
				<td class="data p5px">INR 99000</td>
			</tr>
			<tr>
				<td class="data p5px">Child with Bed</td>
				<td class="data p5px">INR 52000</td>
			</tr>
			<tr>
				<td class="data p5px">Child No Bed</td>
				<td class="data p5px">INR 43000</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kwik2travels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="144488"/>
						</form>
						</div>
						
						";i:1;s:100:"Book Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney - 8 Nights / 9 Days Tour Packages";i:2;s:157:"book simply australia tour - 3n gold coast / 2n cairns / 3n sydney - 8 nights / 9 days tour packages, adventure tour packages, sydney, brisbane tour packages";i:3;s:202:"Book Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney - 8 Nights / 9 Days tour packages from Kwik2 Travels - Get attractive 8 Nights / 9 Days Adventure  tour packages for  Sydney, Brisbane.";i:4;s:982:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Sydney, Brisbane"        
		                 },
		      "description": "Hotel Details -

Gold Coast: Mantra Suncity 
Cairns: Cairns Colonial Club 
ORBay village Tropical Retreat 
ORCairns Plaza 

Sydney: Travelodge SydneyReturn airfare in economy class with taxes 

Any Meals other than specified in inclusions. 

Personal expenses such as tips, porterage, telephone calls, rooms service, etc. 

Surcharge will be applicable on particular events, festival, exhibition & fairs. 

Any security deposit asked by the hotel during check in. 

Travel Insurance. 

Visa Charges. 

GST extra.",
		      "name": "Simply Australia Tour - 3n Gold Coast / 2n Cairns / 3n Sydney",
		      "telephone": "+91-9329116616"
		    }
		    </script>
			";i:5;N;}