a:6:{i:0;s:14038:"				<div class="h1"><h1>Andaman Package 4 Nights</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sugambazaartravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sugambazaartravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Andaman Package 4 Nights</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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair, Havelock</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.sugambazaartravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 4 Nights - 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="41192"/>
						</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_9/257475/82341.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257475/82341.jpg"  width="150" height="150"    alt="Andaman Package 4 Nights" title="Andaman Package 4 Nights" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Air Fare / Train fare.<br />
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.<br />
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.<br />
Entrance Fees & Guide charges.<br />
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).<br />
?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.<br />
Travel Insurance.<br />
Anything which is not include in the inclusion.<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> ARRIVE TO PORT BLAIR
								</p>
								<p class="aj">Our representative will meet and assist you at the Veer Savarkar Airport. Board the waiting vehicles, drive to your hotel and check in. First half of the day is at leisure. Later in the afternoon visit Cellular jail followed by light and sound show. The Cellular Jail has a pride of place in Indiaâs freedom struggle. Many a stalwart were imprisoned here. Declared a national memorial, this three storey prison constructed by Britishers in 1906, is a pilgrimage destination for freedom fighters. This colossal edifice has mutely witnessed the most treacherous of inhumane atrocities borne by the convicts, who were mostly freedom fighters. The day draws to a gentle close with the Sound and Light Show at the historic Cellular Jail which gives you a vivid experience of its strong association with the freedom fighters and their struggle for independence. Overnight stay at the Hotel.</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> PORT BLAIR â ROSS ISLAND â NORTH BAY ISLAND (Coral Island)
								</p>
								<p class="aj">Today after breakfast embark on a day long three island cruise. One of the most sought after activities. It covers a panorama of seven harbours that include the North Bay and Ross Island. It leaves a lasting impression. Visit Ross Island. Once the administrative headquarters of the British and capital of these Islands, the island is now under the Indian Navy. It stands now as a ruin of the bygone days with the old structures almost in debris. There is a small museum named Smritika, it holds photographs and the other antiques of the Britishers relevant to these islands. Thailand is famous for friendly flocks of Deer and lush green walking trails. North Bay, the water lovers may enjoy Snorkelling or take a glass bottom boat ride (Optional on direct payment) in its shallow waters with a chance to see corals up close also has mesmerizing picnic spots with natural picturesque environments Return to the hotel. Overnight stay at the hotel.</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> PORT BLAIR â HAVELOCK ISLAND
								</p>
								<p class="aj">Today after breakfast you will transfer to Jetty. Head to Havelock Island on board Cruise connecting the two islands! Havelock, about 54 kilometres northeast of Portblair, the Island is a hidden jewel. Few Indians know of this stunning<br />
beach destination in their own backyard while heading for Phuket (in Thailand) across the waters of Andaman Sea. Havelock is a serene tropical island encompassing about 86 square kilometres. Its clear waters are rated among the bestin the world for Snorkelling and scuba diving. Close to 1000 different species of marine life inhabit the waters of the Andaman Islands. Scuba divers can see nudi branches, sea slugs and snails, varieties of ghost pipe fish, jaw fish and a number of different crustaceans of all shapes and sizes. With its serene beaches, 40 meters visibility underwater, colorfulcoral reefs and âfar from the maddening crowdâ appeal, Havelock Island has emerged as a dream destination among discerning travellers. Arrive at Havelock Jetty, you are met and assisted by our representative. Board the waiting vehicles and drive to the hotel. Check in at the hotel. After relaxation trip to Kalapathar Beach. Overnight stay at the Hotel.</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> HAVELOCK ISLANDS â PORT BLAIR
								</p>
								<p class="aj">Today after breakfast, trip to Radhanagar Beach (or Beach No. 7) is the jewel in the crown of Havelock Island. Located on the western side of the island, it stands away from the cluster. The glorious white sand beach shot to global fame when Time magazine (in 2004) rated it as the finest in Asia. With lush tropical forest rising on a hill to one side, the draw of this white sand beach has steadily grown in the legion of avid beach buffs. The popularity of this beach has triggered cruises from across the Andaman Sea. Travellers cruise over a few days from Thailand to experience the magic of this beach in particular. A wide beach that runs over a few kilometres, Radhanagar is simply stunning. It lends itself to a variety of activities. Evening return to Port Blair. Overnight stay at Hotel</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> DEPART PORT BLAIR â AIRPORT DROPPING
								</p>
								<p class="aj">Dropping to Airport with memories of an ultimate holidays at Andaman Islands</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>Sightseeing</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air Fare / Train fare.</li><li>
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.</li><li>
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.</li><li>
Entrance Fees & Guide charges.</li><li>
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).</li><li>
?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.</li><li>
Travel Insurance.</li><li>
Anything which is not include in the inclusion.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p>Cancellation Policy

<ul>
	<li>Cancellation before 30 days of start date will be charged processing fee equivalent to INR 3000 per person;</li>
	<li>Cancellations between 20 days to 30 days before start date, 35% of tour cost would be charged as retention;</li>
	<li>Cancellations between 20 days to 15 days before start date, 50% of tour cost would be charged as retention;</li>
	<li>Cancellations made within 15 days of start date, entire tour cost shall be charged as retention;</li>
	<li>?Bank transaction charges apply on credit card/net banking refunds;</li>
	<li>Above policy may vary during peak season</li>
	<li>Note:</li>
</ul>

<p>We are not holding any rooms or airline seats as of now and above mentioned is quote only , subject to availability at the time of confirmation .<br />
First preference will be given to mentioned hotels for reservation. In case of non-availability of these hotels we shall advise the similar or next available option with supplement cost .<br />
Itinerary provided is just suggestive and the sightseeing will be done as per availability.<br />
In case of no show or late cancellation after reconfirmation charges applicable as per the Hotels Policy and other vendors policy.<br />
Itinerary provided is just suggestive and the sightseeing will be done as per availability.<br />
&nbsp;						
    	<p class="h dif xlarge b mb5px">Hotels Used / Similar:-</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Destination</td>
				<td class="headHr p5px b">No of Nights</td>
				<td class="headHr p5px b">Standard</td>
			</tr>
			<tr>
				<td class="data p5px">PortBlair</td>
				<td class="data p5px">3</td>
				<td class="data p5px">Hotel Haywizz</td>
			</tr>
			<tr>
				<td class="data p5px">Havelock-Island</td>
				<td class="data p5px">1</td>
				<td class="data p5px">Gold India Beach Resort</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Preview of the Prices:-</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Rate Per Person</td>
				<td class="headHr p5px b">Standard</td>
			</tr>
			<tr>
				<td class="data p5px">2 Person</td>
				<td class="data p5px">15000</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sugambazaartravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 4 Nights - 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="41192"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Andaman Package 4 Nights - 4 Nights / 5 Days Tour Packages";i:2;s:132:"book andaman package 4 nights - 4 nights / 5 days tour packages, beach and islands tour packages, port blair, havelock tour packages";i:3;s:186:"Sugambazaar Travels & Tours Pvt. Ltd. offers Andaman Package 4 Nights - 4 Nights / 5 Days tour package, budget Beach and Islands tour packages for Port Blair, Havelock at exciting price.";i:4;s:1148:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "Air Fare / Train fare.
Personal expenses such as laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, rafting, rock climbing, paragliding, joy ride (Toy Train), porterage.
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary.
Entrance Fees & Guide charges.
?Any cost arising due to natural calamities like, landslides, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).
?Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure.
Travel Insurance.
Anything which is not include in the inclusion.",
		      "name": "Andaman Package 4 Nights",
		      "telephone": "+91-9795155660"
		    }
		    </script>
			";i:5;N;}